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).
- (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 ).
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
), that is, (integer 0 ).
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.
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.
- (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.
- (string size)
-
Means the same as
(array string-char (size)): the set of strings of the indicated size.
- (simple-string size)
-
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-string size)
-
Means the same as
(vector base-character size): the set of base
strings of the indicated size.
- (simple-base-string size)
-
Means the same
as (simple-array base-character (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.
Next: Defining New Type
Up: Type Specifiers
Previous: Type Specifiers That
AI.Repository@cs.cmu.edu