Move docs for syntax/transformer from unstable-doc.
This commit is contained in:
parent
7e93b7d426
commit
a1c5285cc2
|
@ -10,3 +10,4 @@
|
|||
@include-section["struct.scrbl"]
|
||||
@include-section["path-spec.scrbl"]
|
||||
@include-section["template.scrbl"]
|
||||
@include-section["transformer.scrbl"]
|
||||
|
|
39
pkgs/racket-doc/syntax/scribblings/transformer.scrbl
Normal file
39
pkgs/racket-doc/syntax/scribblings/transformer.scrbl
Normal file
|
@ -0,0 +1,39 @@
|
|||
#lang scribble/doc
|
||||
@(require "common.rkt" scribble/eval (for-label syntax/transformer))
|
||||
|
||||
@(define the-eval (make-base-eval))
|
||||
@(the-eval '(require syntax/transformer (for-syntax racket/base syntax/transformer)))
|
||||
|
||||
@title[#:tag "syntax/transformer"]{Creating Macro Transformers}
|
||||
|
||||
@defmodule[syntax/transformer]
|
||||
|
||||
@defproc[(make-variable-like-transformer [reference-stx syntax?]
|
||||
[setter-stx (or/c syntax? #f) #f])
|
||||
set!-transformer?]{
|
||||
|
||||
Creates a transformer that replaces references to the macro identifier
|
||||
with @racket[reference-stx]. Uses of the macro in operator position
|
||||
are interpreted as an application with @racket[reference-stx] as the
|
||||
function and the arguments as given.
|
||||
|
||||
If the macro identifier is used as the target of a @racket[set!] form,
|
||||
then the @racket[set!] form expands into the application of
|
||||
@racket[setter-stx] to the @racket[set!] expression's right-hand side,
|
||||
if @racket[setter-stx] is syntax; otherwise, the identifier is
|
||||
considered immutable and a syntax error is raised.
|
||||
|
||||
@examples[#:eval the-eval
|
||||
(define the-box (box add1))
|
||||
(define-syntax op
|
||||
(make-variable-like-transformer
|
||||
#'(unbox the-box)
|
||||
#'(lambda (v) (set-box! the-box v))))
|
||||
(op 5)
|
||||
(set! op 0)
|
||||
op
|
||||
]
|
||||
|
||||
}
|
||||
|
||||
@close-eval[the-eval]
|
Loading…
Reference in New Issue
Block a user