Common Lisp the Language, 2nd Edition
![]()
Next: Defining New Type
Up: Type Specifiers
Previous: Type Specifiers
That
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).
(integerlowhigh)
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
(integersmallestlargest)
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.
(modn)
Denotes the set of non-negative integers less than n. This is
equivalent to
(integer 0n-1) or to
(integer 0 (n)).
(signed-bytes)
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

). Simply
signed-byte or (signed-byte *) is the same as
integer.
(unsigned-bytes)
Denotes the set of non-negative integers that can be represented in a
byte of s bits. This is equivalent to (mod
), that is,
(integer 0
). Simply
unsigned-byte or (unsigned-byte *) is the same
as (integer 0 *), the set of non-negative integers.
(rationallowhigh)
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.
(floatlowhigh)
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.

X3J13 voted in March 1989 (REAL-NUMBER-TYPE) to add a list form of the
real type specifier to denote an interval of
real numbers.
(reallowhigh)
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.
(stringsize)
Means the same as
(array string-char (size)):
the set of strings of the indicated size.
(simple-stringsize)
Means the same as
(simple-array string-char (size)):
the set of simple strings of the indicated size.

X3J13 voted in March 1989 (CHARACTER-PROPOSAL) to eliminate the type
string-char and to redefine the type string to
be the union of one or more specialized vector types, the types of whose
elements are subtypes of the type character. Similarly, the
type simple-string is redefined to be the union of one or
more specialized simple vector types, the types of whose elements are
subtypes of the type character.
(base-stringsize)
Means the same as
(vector base-charactersize):
the set of base strings of the indicated size.
(simple-base-stringsize)
Means the same as
(simple-array base-character (size)):
the set of simple base strings of the indicated size.
(bit-vectorsize)
Means the same as
(array bit (size)): the
set of bit-vectors of the indicated size.
(simple-bit-vectorsize)
This means the same as
(simple-array bit (size)):
the set of bit-vectors of the indicated size.
![]()
Next: Defining New Type
Up: Type Specifiers
Previous: Type Specifiers
That
AI.Repository@cs.cmu.edu