Next: Conservative GC, Up: How Guile does it
Any code which operates on Guile datatypes must #include the
header file <libguile.h>. This file contains a definition for
the SCM typedef (Guile's universal type, as in the examples
above), and definitions and declarations for a host of macros and
functions that operate on SCM values.
All identifiers declared by <libguile.h> begin with scm_
or SCM_.
[[I wish this were true, but I don't think it is at the moment. -JimB]] [[It is not true yet. -ttn, 2002-08-20]]
The functions described here generally check the types of their
SCM arguments, and signal an error if their arguments are of an
inappropriate type. Macros generally do not, unless that is their
specified purpose. You must verify their argument types beforehand, as
necessary.
Macros and functions that return a boolean value have names ending in
P or _p (for “predicate”). Those that return a
negated boolean value have names starting with SCM_N. For
example, SCM_IMP (x) is a predicate which returns non-zero iff
x is an immediate value (an IM). SCM_NCONSP (x)
is a predicate which returns non-zero iff x is not a
pair object (a CONS).