eintr: nil explained

 
 An explanation of ‘nil’
 -----------------------
 
 Before illustrating a test for truth, we need an explanation of ‘nil’.
 
    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 list,
 ‘()’, or as ‘nil’.  As far as the Lisp interpreter is concerned, ‘()’
 and ‘nil’ are the same.  Humans, however, tend to use ‘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 ‘t’
 for true.  For example, the expression ‘(> 5 4)’ returns ‘t’ 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)