elisp: Constant Variables
11.2 Variables that Never Change
================================
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: keywordp object
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 (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.