An immediate is a data type contained in type SCM
(long int). The type codes distinguishing immediate types from
each other vary in length, but reside in the low order bits.
SCM object x is an immediate or
non-immediate type, respectively.
1 in
the second to low order bit position. The high order 30 bits are used
for the integer's value.
SCM x is an immediate integer or not
an immediate integer, respectively.
long integer corresponding to SCM x.
SCM inum corresponding to C long integer x.
MAKINUM(0).
Computations on INUMs are performed by converting the arguments to C integers (by a shift), operating on the integers, and converting the result to an inum. The result is checked for overflow by converting back to integer and checking the reverse operation.
The shifts used for conversion need to be signed shifts. If the C
implementation does not support signed right shift this fact is detected
in a #if statement in `scmfig.h' and a signed right shift,
SRS, is constructed in terms of unsigned right shift.
SCM object x is a character.
unsigned char.
char x, returns SCM character.
#t
#f
(). If SICP is #defined, EOL is
#defined to be identical with BOOL_F. In this case, both
print as #f.
#<eof>.
#<undefined> used for variables which have not been defined and
absent optional arguments.
#<unspecified> is returned for those procedures whose return
values are not specified.
isymnames[].
char *
representation (from isymnames[]).
SCM ispcsym n.
SCM iisym n.
SCM iflag n.
repl.c'.
scm.h'.
and, begin, case, cond, define,
do, if, lambda, let, let*,
letrec, or, quote, set!, #f,
#t, #<undefined>, #<eof>, (), and
#<unspecified>.
special symbols: syntax-checked versions of first 14 isyms
0.
There is one exception to this rule, CAR Immediates, described next.
A CAR Immediate is an Immediate point which can only occur in the
CARs of evaluated code (as a result of ceval's memoization
process).