3.3.1 mischief/scope: Managing Internal Definitions
18.104.22.168 Scope Datatype
Recognizes scope values, which encapsulate pairs of internal definition
contexts and expansion contexts.
Produces the internal definition context encapsulated by a scope.
Produces the expansion context encapsulated by a scope.
The current scope used for expansion and local bindings.
Produces a scope encapsulating a fresh internal definition context and
expansion context, extending the ones in sc.
Seals the internal definition context encapsulated by sc.
with the result of
(new-scope #:scope sc)
, and calls
(close-scope! #:scope sc)
22.214.171.124 Local Bindings
Reports whether id is bound as syntax in sc.
Extracts the value associated with id in sc, if sc
is bound as syntax. Recursively follows rename transformers if
rename? is #true. If id is bound as syntax, passes
its value to success; otherwise invokes failure.
126.96.36.199 Lexical Context
Adds the bindings encapsulated by sc to the context of stx.
Removes the bindings encapsulated by sc from the context of
Produces a delta introducer that applies any marks on id that were not
on its original definition.
188.8.131.52 Local Expansion and Evaluation
Locally expands stx
using the definition and expansion
contexts encapsulated by sc
. If stop
is a list, expansion
stops when it encounters any identifier in stop
or any identifier in
. If stop
expansion does not stop, and recurs into subforms.
Note: the interpretation of '() and #false in
stop are reversed from that used in the third argument to
local-expand. This change is intended to make the behavior of
stop more uniform: any list results in head-expansion, while
#false results in recursive expansion.
, but sets the expansion context to
Evaluates stx at compile-time using the bindings in sc.