[plt-scheme] Accessing scheme primitives within macros redefining them
At Tue, 25 Nov 2003 12:08:34 -0500, Jim Witte wrote:
> In Chez, there's an (import scheme) command, so I could right (I
> think)
>
> (define-syntax quasiquote
> (syntax-rules ()
> (_ . rest)
> (begin
> (do-quasi-check rest)
> (import scheme)
> (quasiquote rest))))
I don't think this would work in Chez. When a macro expansion
introduces an `import', the `import' doesn't bind other things
introduced by the same macro expansion. Roughly, the `import' instead
binds in the context of the macro use. (The macros in the POPL paper
rely on this behavior.)
In PLT Scheme, I think you can do what you want only through modules:
(module my-qqm mzscheme
(define-syntax my-qq
(syntax-rules ()
[(_ rest)
(begin
(do-quasi-check rest)
(quasiquote rest))]))
(provide (rename my-qq quasiquote)))
(require my-qqm)
Matthew