John Cowan wrote:
> Eli Barzilay scripsit:
> 
>> [*] As an aside, this is exactly why I like `syntax-case' as a base
>> system: instead of going with some obscure `rename' function or some
>> representation of the lexical environment that surrounds a macro use,
>> it deals directly with "symbols + some opaque value" where the latter
>> represents the lexical information of the identifier and there is no
>> need to understand what is actually kept there.
> 
> And things like this are exactly why I dislike and avoid all low-level
> macro systems and stick with syntax-rules:  I consider hygiene-breaking
> about the same as dynamically scoped local variables, or goto: "an
> invitation to make a mess of one's program."

1) Procedural macros (aka syntax-case macros) are hygienic so long as 
you do not explicitly bend hygiene.  If you want to be a hygiene purist, 
you can still have procedural macros and outlaw `datum->syntax'.  Eli's 
point is just as valid in such a context.

2) You can make a mess with syntax-rules.  The idea that you can just 
look at the text of a Scheme program and determine the scope of an 
identifier is false in general.  This is why I asked earlier, in what 
sense is Scheme lexically scoped?  It is not the usual one.

(This is not, to be clear, a case for "low-level" macro systems.)

David

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to