elisp: List-related Predicates
5.2 Predicates on Lists
=======================
The following predicates test whether a Lisp object is an atom, whether
it is a cons cell or is a list, or whether it is the distinguished
object ‘nil’. (Many of these predicates can be defined in terms of the
others, but they are used so often that it is worth having them.)
-- Function: consp object
This function returns ‘t’ if OBJECT is a cons cell, ‘nil’
otherwise. ‘nil’ is not a cons cell, although it _is_ a list.
-- Function: atom object
This function returns ‘t’ if OBJECT is an atom, ‘nil’ otherwise.
All objects except cons cells are atoms. The symbol ‘nil’ is an
atom and is also a list; it is the only Lisp object that is both.
(atom OBJECT) ≡ (not (consp OBJECT))
-- Function: listp object
This function returns ‘t’ if OBJECT is a cons cell or ‘nil’.
Otherwise, it returns ‘nil’.
(listp '(1))
⇒ t
(listp '())
⇒ t
-- Function: nlistp object
This function is the opposite of ‘listp’: it returns ‘t’ if OBJECT
is not a list. Otherwise, it returns ‘nil’.
(listp OBJECT) ≡ (not (nlistp OBJECT))
-- Function: null object
This function returns ‘t’ if OBJECT is ‘nil’, and returns ‘nil’
otherwise. This function is identical to ‘not’, but as a matter of
clarity we use ‘null’ when OBJECT is considered a list and ‘not’
when it is considered a truth value (see ‘not’ in Combining
Conditions).
(null '(1))
⇒ nil
(null '())
⇒ t