syntax/parse docs: avoid phase arith discussion
Please apply to release branch. svn: r16046
This commit is contained in:
parent
fcbe2cd7d3
commit
880f7f2707
|
@ -170,28 +170,10 @@ identifier as a binding, in which case it would get the value
|
||||||
|
|
||||||
Here's how the syntax class would change:
|
Here's how the syntax class would change:
|
||||||
|
|
||||||
@schemeblock[
|
|
||||||
(define-syntax-class binding
|
|
||||||
#:attributes (x e)
|
|
||||||
(pattern (x:id e:expr))
|
|
||||||
(pattern x:id
|
|
||||||
#:with e #'(quote #f)))
|
|
||||||
]
|
|
||||||
|
|
||||||
@bold{Note: } The syntax template @scheme[#'#f] in the definition
|
|
||||||
above represents an expression that gets inserted by the macro. The
|
|
||||||
expression will be interpreted at phase 0 with respect to the macro
|
|
||||||
(@schemekeywordfont{mylet}), but the module containing
|
|
||||||
@scheme[binding] is required at phase 1. The syntax template needs to
|
|
||||||
be in the context of a binding of @scheme[quote] at phase 0 relative
|
|
||||||
to the macro, which is phase -1 relative to the module it occurs
|
|
||||||
in. That means importing @schememodname[scheme/base]
|
|
||||||
@scheme[for-template] (phase -1).
|
|
||||||
|
|
||||||
@SCHEMEBLOCK[
|
@SCHEMEBLOCK[
|
||||||
(module example-syntax scheme/base
|
(module example-syntax scheme/base
|
||||||
(require syntax/parse
|
(require syntax/parse)
|
||||||
(for-template scheme/base))
|
(require (for-template scheme/base))
|
||||||
(provide binding)
|
(provide binding)
|
||||||
(define-syntax-class binding
|
(define-syntax-class binding
|
||||||
#:attributes (x e)
|
#:attributes (x e)
|
||||||
|
@ -200,6 +182,9 @@ in. That means importing @schememodname[scheme/base]
|
||||||
#:with e #'(quote #f))))
|
#:with e #'(quote #f))))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@bold{Note: } The @scheme[(require (for-template scheme/base))] is
|
||||||
|
needed for the @scheme[quote] expression.
|
||||||
|
|
||||||
If the syntax class definition were a local definition in the same
|
If the syntax class definition were a local definition in the same
|
||||||
module, the @scheme[for-template] would be unnecessary.
|
module, the @scheme[for-template] would be unnecessary.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user