Common Lisp the Language, 2nd Edition
Next: Destructuring
Up: Miscellaneous Features
Previous: Miscellaneous
Features
Many loop constructs take a type-spec argument that allows you
to specify certain data types for loop variables. While it is not
necessary to specify a data type for any variable, by doing so you
ensure that the variable has a correctly typed initial value. The type
declaration is made available to the compiler for more efficient
loop
expansion. In some implementations, fixnum and float
declarations are especially useful; the compiler notices them and emits
more efficient code.
The type-spec argument has the following syntax:
type-spec ::= of-type d-type-spec
d-type-spec ::= type-specifier | (d-type-spec . d-type-spec)
A type-specifier in this syntax can be any Common Lisp type
specifier. The d-type-spec argument is used for destructuring,
as described in section 26.12.2. If the
d-type-spec argument consists solely of the types
fixnum
, float
, t
, or
nil
, the of-type
keyword is optional. The
of-type
construct is optional in these cases to provide
backward compatibility; thus the following two expressions are the
same:
;;; This expression uses the old syntax for type specifiers.
(loop for i fixnum upfrom 3 ...)
;;; This expression uses the new syntax for type specifiers.
(loop for i of-type fixnum upfrom 3 ...)
AI.Repository@cs.cmu.edu