syntax
( define-syntax-parameter idexpr)
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.
(raise-syntax-error #f"use of a class keyword not in a begin.html#%28form._%28%28quote._~23~25kernel%29._begin-for-syntax%29%29" data-pltdoc="x">begin-for-syntax (displayln (syntax-parameter-value #'current-class)))#f
> (yield5)5
syntax
( syntax-parameterize ([idexpr]...)body-expr...+)
+See also splicing-syntax-parameterize .
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:syntax
( define-rename-transformer-parameter idexpr)
Binds id as syntax to a syntax parameter that must be bound to a make-rename-transformer result and, unlike define-syntax-parameter , syntax-local-value of id does produce the target’s value, including inside of syntax-parameterize .Examples:> (testnot-num)#<procedure:syntax-parameter>
> (testnum)1
(testnum))2
Added in version 6.3.0.14 of package base.
12.5.1Syntax Parameter Inspectionπ i
procedure
( syntax-parameter-value id-stx)→any
id-stx:syntax?This procedure is intended for use in a transformer environment, where id-stx is an identifier bound in the normal environment to a syntax parameter. The result is the current value of the syntax parameter, as adjusted by syntax-parameterize form.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.
procedure
( make-parameter-rename-transformer id-stx)→any
id-stx:syntax?This procedure is intended for use in a transformer, where id-stx is an identifier bound to a syntax parameter. The result is a transformer that behaves as id-stx, but that cannot be used with syntax-parameterize or syntax-parameter-value .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.