[R6RS] syntax-case semantics
Anton van Straaten
anton at appsolutions.com
Fri Mar 17 15:46:37 EST 2006
>>At least in theory, it means that writing reusable and reliable
>>syntax-generating procedures for use by macros should be trickier, since
>>such a procedure has to take special steps to avoid having variables it
>>introduces capture variables from the invoking macro's syntactic
> That's conceivable, but I believe it's a non-problem in practice, and I
> hate to complicate the common case to fix a non-problem.
BTW, I realized that I overstated the nature of the problem in the quote
above: unintended capture can only occur if the code in question is
passed a syntax object containing an identifier from the invoking
macro's syntactic environment, and then uses that object within a scope
which introduces a same-named identifier.
(Just for completeness, there's an alternative scenario in which
procedural code could generate syntax which contains a free reference
that is inadvertently captured by an identifier in the invoking macro's
syntactic environment. However, if that capture is unintended, then it
means that the free reference would have been an error otherwise, so
there doesn't seem to be a case for supporting this, except possibly
from an error-checking perspective.)
>>Might it make sense to add to traditional syntax-case something like a
>>FRESH-SYNTAX form, which uses the SRFI 72 semantics? That would allow
>>the sorts of problem examples given in the SRFI to be written safely and
> That's a good idea, worth considering anyway.
Well, according to Matthew I seem to have reinvented
make-syntax-introducer. I'll have to read the PLT manual sometime! ;)
I do think that specifying something like this could be a good idea, if
it doesn't complicate anything too much. But I'll give this all some
more thought, now that I have a better understanding of the issue and
its context. Thanks for all the input.
More information about the R6RS