[plt-scheme] (require... ) expanded from a macro

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sun Oct 22 18:34:02 EDT 2006

At Sun, 22 Oct 2006 13:01:38 +0200, Jens Axel Søgaard wrote:
> However in the special case where syntax-local-introduce
> is applied to a syntax-object constructed by the transformer
> containing no parts of the original syntax, I think of it
> as "introduce this syntax-object into context of the macro
> application".
> 
> [...]
>
> The main appeal for me, I think, is that "the context of the macro 
> application" is implicit.

I started to ask: In the case of a macro-generated macro application,
do you mean the context of the immediate macro application or the
original one?

But I think my question doesn't make sense. "Lexical context" and
"macro-application context" are not the same kind of thing. They
overlap in their implementation via marks, which is why
`syntax-local-introduce' works to a large degree for non-hygienic
introductions, but it seems difficult to connect "macro-application
context" and "lexical context" more precisely.

> Another use is preventing additional marking, when a macro embeds return
> values of syntax-local-get-shadower in its output.
>
> But syntax-local-get-shadower is rare:
> 
> <http://www.scheme.dk/search-plt/search.ss?query=syntax-local-get-shadower>

Ah, from obscure to more obscure... :)

In this case, though, I think I know what the core macro system is
missing. Excluding the broken `package' use,
`syntax-local-get-shadower' is used to implement syntax parameters,
and syntax parameters are the right core feature.

Matthew



Posted on the users mailing list.