27. "Data Types"
.setq loop-data-type-section css-number
.setq loop-data-type-page page
.topic data type keywords
In many of the clause descriptions, an optional data-type
is shown. A data-type in this sense is an atomic symbol, and is
recognizable as such by loop. These are used for declaration
and initialization purposes; for example, in
| (loop for x in l
maximize x flonum into the-max
sum x flonum into the-sum
...)
|
the flonum data-type keyword for the maximize clause
says that the result of the max operation, and its "argument"
(x), will both be flonums; hence loop may choose to code
this operation specially since it knows there can be no contagious
arithmetic. The flonum data-type keyword for the sum
clause behaves similarly, and in addition causes the-sum to be
correctly initialized to 0.0 rather than 0. The
flonum keywords will also cause the variables the-max and
the-sum to be declared to be flonum, in implementations
where such a declaration exists. In general, a numeric data-type more
specific than number, whether explicitly specified or defaulted,
is considered by loop to be license to generate code using
type-specific arithmetic functions where reasonable. The following
data-type keywords are recognized by loop (others may be
defined; for that, consult the source code):
fixnum
- An implementation-dependent limited range integer.
flonum
- An implementation-dependent limited precision floating point number.
small-flonum
- This is recognized in the Zetalisp implementation only, where its
only significance is for initialization purposes, since no such
declaration exists.
integer
- Any integer (no range restriction).
number
- Any number.
notype
- Unspecified type (i.e., anything else).
Note that explicit specification of a non-numeric type for an
operation which is numeric (such as the summing clause) may
cause a variable to be initialized to nil when it should be
0.
If local data-type declarations must be inhibited, one can use
the nodeclare clause, which is described on
(loop-nodeclare-clause).
This document was generated
by Brad Parker on June, 13 2006
using texi2html