Common Lisp the Language, 2nd Edition
Common Lisp provides several different representations for numbers. These representations may be divided into four categories: integers, ratios, floating-point numbers, and complex numbers. Many numeric functions will accept any kind of number; they are generic. Other functions accept only certain kinds of numbers.
Note that this remark, predating the design of the Common Lisp Object System,
uses the term ``generic'' in a generic sense and not necessarily
in the technical sense used by CLOS
(see chapter 2).
In general, numbers in Common Lisp are not true objects; eq cannot be counted upon to operate on them reliably. In particular, it is possible that the expression
(let ((x z) (y z)) (eq x y))
may be false rather than true if the value of z is a number.
If two objects are to be compared for ``identity,'' but either might be a number, then the predicate eql is probably appropriate; if both objects are known to be numbers, then = may be preferable.