13.3 The scheme/load Language
The namespace for evaluation shares the module registry with the scheme/load module instance, but it has a separate top-level environment, and it is initialized with the bindings of scheme. A single namespace is created for each instance of the scheme/load module (i.e., multiple modules using the scheme/load language share a namespace). The scheme/load library exports only #%module-begin and #%top-interaction forms that effectively swap in the evaluation namespace and call eval.
For example, the body of a module using scheme/load can include module forms, so that running the following module prints 5:
|(module m scheme/base|
|(define x 5))|
|(module n scheme/base|
|(define x 6)|
|(display (eval 'x))|
Since all forms within a scheme/load module are evaluated in the top level, bindings cannot be exported from the module using provide. Similarly, since evaluation of the module-body forms is inherently dynamic, compilation of the module provides essentially no benefit. For these reasons, use scheme/load for interactive exploration of top-level forms only, and not for constructing larger programs.