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
