There is an important aspect to the truth test in an if
expression. So far, we have spoken of “true” and “false” as values of
predicates as if they were new kinds of Emacs Lisp objects. In fact,
“false” is just our old friend nil
. Anything else—anything
at all—is “true”.
The expression that tests for truth is interpreted as true
if the result of evaluating it is a value that is not nil
. In
other words, the result of the test is considered true if the value
returned is a number such as 47, a string such as "hello"
, or a
symbol (other than nil
) such as flowers
, or a list (so
long as it is not empty), or even a buffer!