Common Lisp the Language, 2nd Edition
![]()
Next: Equality Predicates
Up: Data Type Predicates
Previous: General Type
Predicates
The following predicates test for individual data types.
[Function]
null object
null is true if its argument is (), and
otherwise is false. This is the same operation performed by the function
not; however, not is normally used to invert a
Boolean value, whereas null is normally used to test for an
empty list. The programmer can therefore express intent by the
choice of function name.
(null x) == (typep x 'null) == (eq x '())
[Function]
symbolp object
symbolp is true if its argument is a symbol, and
otherwise is false.
(symbolp x) == (typep x 'symbol)
Compatibility note: The Interlisp equivalent of
symbolp is called litatom.
[Function]
atom object
The predicate atom is true if its argument is not a
cons, and otherwise is false. Note that (atom '``()``) is
true, because ()
nil.
(atom x) == (typep x 'atom) == (not (typep x 'cons))
Compatibility note: In some Lisp dialects, notably Interlisp, only symbols and numbers are considered to be atoms; arrays and strings are considered to be neither atoms nor lists (conses).
[Function]
consp object
The predicate consp is true if its argument is a cons,
and otherwise is false. Note that the empty list is not a cons, so
(consp '``()``) == (consp '``nil``) =>
nil.
(consp x) == (typep x 'cons) == (not (typep x 'atom))
Compatibility note: Some Lisp implementations call
this function pairp or listp. The name
pairp was rejected for Common Lisp because it emphasizes
too strongly the dotted-pair notion rather than the usual usage of
conses in lists. On the other hand, listp too strongly
implies that the cons is in fact part of a list, which after all it
might not be; moreover, () is a list, though not a cons.
The name consp seems to be the appropriate compromise.
[Function]
listp object
listp is true if its argument is a cons or the empty
list (), and otherwise is false. It does not check for
whether the list is a ``true list’’ (one terminated by nil)
or a ``dotted list’’ (one terminated by a non-null atom).
(listp x) == (typep x 'list) == (typep x '(or cons null))
[Function]
numberp object
numberp is true if its argument is any kind of number,
and otherwise is false.
(numberp x) == (typep x 'number)
[Function]
integerp object
integerp is true if its argument is an integer, and
otherwise is false.
(integerp x) == (typep x 'integer)
Compatibility note: In MacLisp this is called
fixp. Users have been confused as to whether this meant
integerp or fixnump, and so the name
integerp has been adopted here.
[Function]
rationalp object
rationalp is true if its argument is a rational number
(a ratio or an integer), and otherwise is false.
(rationalp x) == (typep x 'rational)
[Function]
floatp object
floatp is true if its argument is a floating-point
number, and otherwise is false.
(floatp x) == (typep x 'float)
[Function]
realp object
X3J13 voted in March 1989 (REAL-NUMBER-TYPE) to add the function
realp. realp is true if its argument is a real
number, and otherwise is false.
(realp x) == (typep x 'real)
[Function]
complexp object
complexp is true if its argument is a complex number,
and otherwise is false.
(complexp x) == (typep x 'complex)
[Function]
characterp object
characterp is true if its argument is a character, and
otherwise is false.
(characterp x) == (typep x 'character)
[Function]
stringp object
stringp is true if its argument is a string, and
otherwise is false.
(stringp x) == (typep x 'string)
[Function]
bit-vector-p object
bit-vector-p is true if its argument is a bit-vector,
and otherwise is false.
(bit-vector-p x) == (typep x 'bit-vector)
[Function]
vectorp object
vectorp is true if its argument is a vector, and
otherwise is false.
(vectorp x) == (typep x 'vector)
[Function]
simple-vector-p object
vectorp is true if its argument is a simple general
vector, and otherwise is false.
(simple-vector-p x) == (typep x 'simple-vector)
[Function]
simple-string-p object
simple-string-p is true if its argument is a simple
string, and otherwise is false.
(simple-string-p x) == (typep x 'simple-string)
[Function]
simple-bit-vector-p object
simple-bit-vector-p is true if its argument is a simple
bit-vector, and otherwise is false.
(simple-bit-vector-p x) == (typep x 'simple-bit-vector)
[Function]
arrayp object
arrayp is true if its argument is an array, and
otherwise is false.
(arrayp x) == (typep x 'array)
[Function]
packagep object
packagep is true if its argument is a package, and
otherwise is false.
(packagep x) == (typep x 'package)
[Function]
functionp object

functionp is true if its argument is suitable for applying
to arguments, using for example the funcall or
apply function. Otherwise functionp is
false.
functionp is always true of symbols, lists whose
car is the symbol lambda, any value returned by
the function special form, and any values returned by the
function compile when the first argument is
nil.


X3J13 voted in June 1988 (FUNCTION-TYPE) to define
(functionp x) == (typep x 'function)
Because the vote also specifies that types cons and
symbol are disjoint from the type function,
this is an incompatible change; now functionp is in fact
always false of symbols and lists.

[Function]
compiled-function-p object
compiled-function-p is true if its argument is any
compiled code object, and otherwise is false.
(compiled-function-p x) == (typep x 'compiled-function)

[Function]
commonp object
commonp is true if its argument is any standard Common
Lisp data type, and otherwise is false.
(commonp x) == (typep x 'common)

X3J13 voted in March 1989 (COMMON-TYPE) to remove the predicate
commonp (and the type common) from the
language.

See also standard-char-p, string-char-p,
streamp, random-state-p,
readtablep, hash-table-p, and
pathnamep.
![]()
Next: Equality Predicates
Up: Data Type Predicates
Previous: General Type
Predicates
AI.Repository@cs.cmu.edu