[plt-scheme] 205.8 addition - syntax-id-rules
I've just exp-tagged an addition to v205.8.
The `syntax-id-rules' form is like `syntax-rules', except that it
creates a transformer that is invoked whenever its binding identifier
is used in an expression position (not just the application position)
and whenever it is used as a `set!' target. In other words,
`syntax-id-rules' is the `make-set!-transformer' version of
`syntax-rules'.
I'm not sure that this form useful in practice (compared to using
`syntax-case' and `make-set!-transformer'), but it helps for writing a
certain kind of tutorial.
(define-syntax pwd
(syntax-id-rules (set!)
[(set! pwd expr) (current-directory expr)]
[(clock expr ...) ((current-directory) expr ...)]
[clock (current-directory)]))
(set! pwd "/tmp") ; sets current-directory parameter
pwd ; => "/tmp"
(current-directory) ; => "/tmp"
(current-directory "/usr/tmp")
pwd ; => "/usr/tmp"
Matthew