Add a few examples to syntax transformer section
This commit is contained in:
parent
2841e873e1
commit
eaf9521336
|
@ -103,7 +103,12 @@ precedence for the purposes of macro expansion.}
|
||||||
Returns @racket[#t] if @racket[v] is a value created by
|
Returns @racket[#t] if @racket[v] is a value created by
|
||||||
@racket[make-rename-transformer] or an instance of a structure type
|
@racket[make-rename-transformer] or an instance of a structure type
|
||||||
with the @racket[prop:rename-transformer] property, @racket[#f]
|
with the @racket[prop:rename-transformer] property, @racket[#f]
|
||||||
otherwise.}
|
otherwise.
|
||||||
|
|
||||||
|
@examples[#:eval stx-eval
|
||||||
|
(rename-transformer? (make-rename-transformer #'values))
|
||||||
|
(rename-transformer? 'not-a-rename-transformer)
|
||||||
|
]}
|
||||||
|
|
||||||
|
|
||||||
@defproc[(make-rename-transformer [id-stx syntax?]
|
@defproc[(make-rename-transformer [id-stx syntax?]
|
||||||
|
@ -150,6 +155,12 @@ rename transformer:
|
||||||
@racket[syntax-local-make-delta-introducer] functions recognize
|
@racket[syntax-local-make-delta-introducer] functions recognize
|
||||||
rename-transformer bindings and consult their targets.}
|
rename-transformer bindings and consult their targets.}
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
@examples[#:eval stx-eval
|
||||||
|
(define-syntax my-or (make-rename-transformer #'or))
|
||||||
|
(my-or #f #t)
|
||||||
|
(free-identifier=? #'my-or #'or)
|
||||||
]}
|
]}
|
||||||
|
|
||||||
|
|
||||||
|
@ -158,7 +169,11 @@ rename transformer:
|
||||||
|
|
||||||
Returns the identifier passed to @racket[make-rename-transformer] to
|
Returns the identifier passed to @racket[make-rename-transformer] to
|
||||||
create @racket[transformer] or as indicated by a
|
create @racket[transformer] or as indicated by a
|
||||||
@racket[prop:rename-transformer] property on @racket[transformer].}
|
@racket[prop:rename-transformer] property on @racket[transformer].
|
||||||
|
|
||||||
|
@examples[#:eval stx-eval
|
||||||
|
(rename-transformer-target (make-rename-transformer #'or))
|
||||||
|
]}
|
||||||
|
|
||||||
|
|
||||||
@defthing[prop:rename-transformer struct-type-property?]{
|
@defthing[prop:rename-transformer struct-type-property?]{
|
||||||
|
@ -445,7 +460,28 @@ environment, the result is obtained by applying @racket[failure-thunk]
|
||||||
if not @racket[#f]. If @racket[failure-thunk] is @racket[false], the
|
if not @racket[#f]. If @racket[failure-thunk] is @racket[false], the
|
||||||
@exnraise[exn:fail:contract].
|
@exnraise[exn:fail:contract].
|
||||||
|
|
||||||
@transform-time[]}
|
@transform-time[]
|
||||||
|
|
||||||
|
@examples[#:eval stx-eval
|
||||||
|
(define-syntax swiss-cheeses? #t)
|
||||||
|
(define-syntax (transformer stx)
|
||||||
|
(if (syntax-local-value #'swiss-cheeses?)
|
||||||
|
#''(gruyère emmental raclette)
|
||||||
|
#''(roquefort camembert boursin)))
|
||||||
|
(transformer)
|
||||||
|
]
|
||||||
|
@examples[#:eval stx-eval
|
||||||
|
(define-syntax (transformer-2 stx)
|
||||||
|
(syntax-local-value #'something-else (λ () (error "no binding"))))
|
||||||
|
(transformer-2)
|
||||||
|
]
|
||||||
|
@examples[#:eval stx-eval
|
||||||
|
(define-syntax nachos #'(printf "nachos~n"))
|
||||||
|
(define-syntax chips (make-rename-transformer #'nachos))
|
||||||
|
(define-syntax (transformer-3 stx)
|
||||||
|
(syntax-local-value #'chips))
|
||||||
|
(transformer-3)
|
||||||
|
]}
|
||||||
|
|
||||||
|
|
||||||
@defproc[(syntax-local-value/immediate [id-stx syntax?]
|
@defproc[(syntax-local-value/immediate [id-stx syntax?]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user