Common Lisp the Language, 2nd Edition


next up previous contents index
Next: Defining New Type Up: Type Specifiers Previous: Type Specifiers That


4.6. Type Specifiers That Abbreviate

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.

change_begin
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.

change_end
old_change_begin

(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.

old_change_end

change_begin
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.

change_end

(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 up previous contents index
Next: Defining New Type Up: Type Specifiers Previous: Type Specifiers That



AI.Repository@cs.cmu.edu