Common Lisp the Language
2nd Edition
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)
[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))
[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))
[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)
[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.