Common Lisp the Language
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.