Node:Immediates vs Non-immediates, Next:Immediate Datatypes, Previous:Conservative GC, Up:How Guile does it
Guile classifies Scheme objects into two kinds: those that fit entirely
within an SCM
, and those that require heap storage.
The former class are called immediates. The class of immediates includes small integers, characters, boolean values, the empty list, the mysterious end-of-file object, and some others.
The remaining types are called, not surprisingly, non-immediates. They include pairs, procedures, strings, vectors, and all other data types in Guile.
int SCM_IMP (SCM x) | Macro |
Return non-zero iff x is an immediate object. |
int SCM_NIMP (SCM x) | Macro |
Return non-zero iff x is a non-immediate object. This is the
exact complement of SCM_IMP , above.
|
Note that for versions of Guile prior to 1.4 it was necessary to use the
SCM_NIMP
macro before calling a finer-grained predicate to
determine x's type, such as SCM_CONSP
or
SCM_VECTORP
. This is no longer required: the definitions of all
Guile type predicates now include a call to SCM_NIMP
where
necessary.