[plt-scheme] checking my macro understanding.
If anyone has 30 seconds, I want to make sure I understand what's
going on here and why:
(module provides-a mzscheme
(provide a)
(define-syntax (a stx)
(syntax-case stx ()
[(_ x) #`(+ x 13)])))
(module expands-into-requirer mzscheme
(expand
#`(module foo mzscheme
(require provides-a)
(display (a 10))
)))
(require expands-into-requirer)
This causes an error on an unbound "a" in the call to display.
Literally:
[bug icon] expand: unbound variable in module in: a
My understanding is that this occurs because the context of the hash-
quote is that of the module expands-into-requirer, where 'a' is not
bound to a macro. However, I can make this code run (I tried it) by
using datum->syntax-object to defeat the hygiene bindings.
Broadly, if I want to expand into a module form, I need to be careful
to defeat hygiene wherever I want to embed code that refers to macros
that are imported into the module. Is this correct?
Thanks in advance; I'm sure that the manual
John Clements
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2484 bytes
Desc: not available
URL: <http://lists.racket-lang.org/users/archive/attachments/20070208/6b237c74/attachment.p7s>