Copyright (C) 2000-2012 |
GNU Info (emacs-lisp-intro.info)nil explainedAn 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) |