In Emacs Lisp, certain symbols normally evaluate to themselves. These
include nil and t, as well as any symbol whose name starts
with `:'. 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 symbol whose name
starts with `:', except that you are allowed to set such a symbol to
itself.
nil == 'nil
=> nil
(setq nil 500)
error--> Attempt to set constant symbol: nil
nil, you are allowed to set and bind symbols
whose names start with `:' as you wish. This is to make it
possible to run old Lisp programs which do that.
Go to the first, previous, next, last section, table of contents.