Next: List Elements, Previous: Cons Cells, Up: Lists [Contents][Index]

### 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

Next: List Elements, Previous: Cons Cells, Up: Lists [Contents][Index]