Before illustrating a test for truth, we need an explanation of
In Emacs Lisp, the symbol
nil has two meanings. First, it means the
empty list. Second, it means false and is the value returned when a
true-or-false-test tests false.
nil can be written as an empty
(), or as
nil. As far as the Lisp interpreter is
nil are the same. Humans, however, tend
nil for false and
() for the empty list.
In Emacs Lisp, any value that is not
nil—is not the empty
list—is considered true. This means that if an evaluation returns
something that is not an empty list, an
if expression will test
true. For example, if a number is put in the slot for the test, it
will be evaluated and will return itself, since that is what numbers
do when evaluated. In this conditional, the
if expression will
test true. The expression tests false only when
nil, an empty
list, is returned by evaluating the expression.
You can see this by evaluating the two expressions in the following examples.
In the first example, the number 4 is evaluated as the test in the
if expression and returns itself; consequently, the then-part
of the expression is evaluated and returned: ‘true’ appears in
the echo area. In the second example, the
nil indicates false;
consequently, the else-part of the expression is evaluated and
returned: ‘false’ appears in the echo area.
(if 4 'true 'false)
(if nil 'true 'false)
Incidentally, if some other useful value is not available for a test that
returns true, then the Lisp interpreter will return the symbol
for true. For example, the expression
(> 5 4) returns
when evaluated, as you can see by evaluating it in the usual way:
(> 5 4)
On the other hand, this function returns
nil if the test is false.
(> 4 5)