Next: Local Variables, Previous: Global Variables, Up: Variables [Contents][Index]
In Emacs Lisp, certain symbols normally evaluate to themselves. These
include nil
and t
, as well as any symbol whose name starts
with ‘:’ (these are called keywords). These symbols cannot
be rebound, nor can their values be changed. Any attempt to set or bind
nil
or t
signals a setting-constant
error. The
same is true for a keyword (a symbol whose name starts with ‘:’),
if it is interned in the standard obarray, except that setting such a
symbol to itself is not an error.
nil ≡ 'nil ⇒ nil
(setq nil 500) error→ Attempt to set constant symbol: nil
function returns t
if object is a symbol whose name
starts with ‘:’, interned in the standard obarray, and returns
nil
otherwise.
These constants are fundamentally different from the “constants”
defined using the defconst
special form (see Defining Variables). A defconst
form serves to inform human readers
that you do not intend to change the value of a variable, but Emacs
does not raise an error if you actually change it.