There is an important aspect to the truth test in an
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
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!