35 lines
1.4 KiB
Racket
35 lines
1.4 KiB
Racket
#lang scribble/doc
|
|
@(require "mz.ss"
|
|
(for-label scheme/enter))
|
|
|
|
@title[#:tag "enter"]{Interactive Module Loading}
|
|
|
|
@note-lib[scheme/enter]
|
|
|
|
@defform*[[(enter! module-path)
|
|
(enter! #f)]]{
|
|
|
|
Intended for use in a @tech{REPL}, such as when @exec{mzscheme} is
|
|
started in interactive mode. When a @scheme[module-path] is provided
|
|
(in the same sense as for @scheme[require]), the corresponding module
|
|
is loaded or invoked, and the current @tech{namespace} is changed to
|
|
the body of the module via @scheme[module->namespace]. When
|
|
@scheme[#f] is provided, then the current @tech{namespace} is restored
|
|
to the original one.
|
|
|
|
If invoking @scheme[module-path] requires loading any files, then
|
|
modification dates of the files are recorded. If the file is modified,
|
|
then a later @scheme[enter!] re-loads the module from source; see also
|
|
@secref["module-redeclare"]. Similarly if a later @scheme[enter!]
|
|
transitively @scheme[require]s a modified module, then the required
|
|
module is re-loaded. Re-loading support works only for modules that
|
|
are first loaded (either directly or indirectly through transitive
|
|
@scheme[require]s) via @scheme[enter!].
|
|
|
|
After switching namespaces to the designated module, @scheme[enter!]
|
|
automatically requires @scheme[scheme/enter] into the namespace, so
|
|
that @scheme[enter!] can be used to switch namespaces again.
|
|
|
|
When it loads or re-loads a module from a file, @scheme[enter!] prints
|
|
a message to @scheme[(current-error-port)].}
|