Next: Top-level Variable References, Previous: Module Manifests, Up: Compiling Scheme [Contents][Index]
For the purpose of compiling Scheme code, each top-level
require
makes the identifiers exported by its feature’s module
defined
(or defmacroed or defined-syntaxed) within the file
(being compiled) headed with those requires.
Top-level occurrences of require-if
make defined the exports
from the module named by the second argument if the
feature-expression first argument is true in the target
environment. The target feature compiling
should be provided
during this phase of compilation.
Non-top-level SLIB occurences of require
and require-if
of quoted features can be ignored by compilers. The SLIB modules will
all have top-level constructs for those features.
Note that aggregate catalog entries import more than one module.
Implementations of require
may or may not be transitive;
code which uses module exports without requiring the providing module
is in error.
In the SLIB modules modular
, batch
, hash
,
common-lisp-time
, commutative-ring
, charplot
,
logical
, common-list-functions
, coerce
and
break
there is code conditional on features being
provided?
. Most are testing for the presence of features which
are intrinsic to implementations (inexacts, bignums, ...).
In all cases these provided?
tests can be evaluated at
compile-time using feature-eval
(see feature-eval). The simplest way to compile these
constructs may be to treat provided?
as a macro.