Next: , Previous: , 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: , Previous: , Up: Lists   [Contents][Index]