The #%namespaced hook
(require namespaced-transformer) | |
package: namespaced-transformer-lib |
The #%namespaced form adds a form of explicit identifier namespacing, designed to be used in contexts where syntax objects must be created without lexical scope, such as when implementing read-syntax for a language. This is especially useful for “language extensions”, also known as “meta languages”, such as languages created using make-meta-reader. Since language extensions do not have control over the lexical environment that the produced syntax objects will be evaluated in, it is difficult to create hygienic extensions that adjust semantics. If the “host” language provides #%namespaced, then language extensions can use it to safely hook into the result by defining ordinary syntax transformers.
syntax
(#%namespaced module-path form)
form = id | (id . args)
1 Checking if languages support #%namespaced
(require namespaced-transformer/info-key) | |
package: namespaced-transformer-lib |
value
key:supports-namespaced? : any/c