elisp: nil and t
1.3.2 ‘nil’ and ‘t’
-------------------
In Emacs Lisp, the symbol ‘nil’ has three separate meanings: it is a
symbol with the name ‘nil’; it is the logical truth value FALSE; and it
is the empty list—the list of zero elements. When used as a variable,
‘nil’ always has the value ‘nil’.
As far as the Lisp reader is concerned, ‘()’ and ‘nil’ are identical:
they stand for the same object, the symbol ‘nil’. The different ways of
writing the symbol are intended entirely for human readers. After the
Lisp reader has read either ‘()’ or ‘nil’, there is no way to determine
which representation was actually written by the programmer.
In this manual, we write ‘()’ when we wish to emphasize that it means
the empty list, and we write ‘nil’ when we wish to emphasize that it
means the truth value FALSE. That is a good convention to use in Lisp
programs also.
(cons 'foo ()) ; Emphasize the empty list
(setq foo-flag nil) ; Emphasize the truth value FALSE
In contexts where a truth value is expected, any non-‘nil’ value is
considered to be TRUE. However, ‘t’ is the preferred way to represent
the truth value TRUE. When you need to choose a value that represents
TRUE, and there is no other basis for choosing, use ‘t’. The symbol ‘t’
always has the value ‘t’.
In Emacs Lisp, ‘nil’ and ‘t’ are special symbols that always evaluate
to themselves. This is so that you do not need to quote them to use
them as constants in a program. An attempt to change their values
results in a ‘setting-constant’ error. Constant Variables.
-- Function: booleanp object
Return non-‘nil’ if OBJECT is one of the two canonical boolean
values: ‘t’ or ‘nil’.