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
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.
require may or may not be transitive;
code which uses module exports without requiring the providing module
is in error.
In the SLIB modules
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
(see feature-eval). The simplest way to compile these
constructs may be to treat
provided? as a macro.