The following type specifiers are, for the most part, abbreviations for other type
specifiers that would be far too verbose to write out explicitly (using, for example,
member).
-
(integer low high)
Denotes the integers between low and high. The limits
low and high must each be an integer, a list of an integer, or unspecified.
An integer is an inclusive limit, a list of an integer is an exclusive
limit, and * means that a limit does not exist and so effectively
denotes minus or plus infinity, respectively. The type fixnum is simply
a name for (integer smallest largest) for implementation-dependent
values of smallest and largest (see most-negative-fixnum and
most-positive-fixnum). The type (integer 0 1) is so useful that it
has the special name bit.
-
(mod n)
Denotes the set of non-negative integers less than n. This is
equivalent to (integer 0 n − 1) or to (integer 0 (n)).
-
(signed-byte s)
Denotes the set of integers that can be represented in
two’s-complement form in a byte of s bits. This is equivalent to
(integer − 2s−1 2s−1 − 1). Simply signed-byte or (signed-byte *)
is the same as integer.
-
(unsigned-byte s)
Denotes the set of non-negative integers that can be
represented in a byte of s bits. This is equivalent to (mod 2s), that is,
(integer 0 2s − 1). Simply unsigned-byte or (unsigned-byte *) is
the same as (integer 0 *), the set of non-negative integers.
-
(rational low high)
Denotes the rationals between low and high. The
limits low and high must each be a rational, a list of a rational, or
unspecified. A rational is an inclusive limit, a list of a rational is an
exclusive limit, and * means that a limit does not exist and so effectively
denotes minus or plus infinity, respectively.
-
(float low high)
Denotes the set of floating-point numbers between low
and high. The limits low and high must each be a floating-point number,
a list of a floating-point number, or unspecified; a floating-point number
is an inclusive limit, a list of a floating-point number is an exclusive
limit, and * means that a limit does not exist and so effectively denotes
minus or plus infinity, respectively.
In a similar manner, one may use:
(short-float
low high)
(single-float
low high)
(double-float
low high)
(long-float
low high)
In this case, if a limit is a floating-point number (or a list of one), it must be
one of the appropriate format.
-
(real low high)
Denotes the real numbers between low and high. The limits low
and high must each be a real, a list of a real, or unspecified. A real is an
inclusive limit, a list of a real is an exclusive limit, and * means that a
limit does not exist and so effectively denotes minus or plus infinity,
respectively.
-
(base-string size)
Means the same as (vector base-char size): the set of base
strings of the indicated size.
-
(simple-base-string size)
Means the same as (simple-array base-char
(size)): the set of simple base strings of the indicated size.
-
(bit-vector size)
Means the same as (array bit (size)): the set of bit-vectors
of the indicated size.
-
(simple-bit-vector size)
This means the same as (simple-array bit (size)):
the set of bit-vectors of the indicated size.