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.