12.5 Syntax Parameters
The id can be used with syntax-parameterize
or syntax-parameter-value (in a transformer). If
expr produces a procedure of one argument or a
make-set!-transformer result, then id can be
used as a macro. If expr produces a
make-rename-transformer result, then id can be
used as a macro that expands to a use of the target identifier, but
syntax-local-value of id does not produce
the target’s value.
Examples:
Each id must be bound to a syntax parameter using
define-syntax-parameter. Each expr is an expression
in the transformer environment. During the expansion of the
body-exprs, the value of each expr is bound to the
corresponding id.
If an expr produces a procedure of one argument or a
make-set!-transformer result, then its id
can be used as a macro during the expansion of the
body-exprs. If expr produces a
make-rename-transformer result, then id can be
used as a macro that expands to a use of the target identifier, but
syntax-local-value of id does not produce
the target’s value.
Examples:
Examples:
Added in version 6.3.0.14 of package base.
12.5.1 Syntax Parameter Inspection
This binding is provided for-syntax by
racket/stxparam, since it is normally used in a
transformer. It is provided normally by
racket/stxparam-exptime.
Using make-parameter-rename-transformer is analogous to
defining a procedure that calls a parameter. Such a procedure can be
exported to others to allow access to the parameter value, but not to
change the parameter value. Similarly,
make-parameter-rename-transformer allows a syntax parameter
to be used as a macro, but not changed.
The result of make-parameter-rename-transformer is not
treated specially by syntax-local-value, unlike the result
of make-rename-transformer.
This binding is provided for-syntax by
racket/stxparam, since it is normally used in a
transformer. It is provided normally by
racket/stxparam-exptime.