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.