On Nov 20, 2010, at 9:01 PM, Greg Hendershott wrote: > But I didn't get the > impression that all or even most of the macro techniques were > unhygienic.
Hygiene is a technical term. The idea is roughly that the __macro system__ (as a whole) should respect the lexical structure of your program. That is, by default no programmer should be able to accidentally write a macro that messes up lexical bindings in a subtle way. Roughly speaking, macro hygiene is like safety. The latter also is a property of the language, meaning all programs have it, no matter the skill of the programmer who uses them. In particular, it doesn't make much sense to say an individual macro is hygienic or that an individual program is safe. You can 'prove' certain fail-safety properties about each but that's all. The word 'prove' is meant in the general sense that reasoning about programs constitutes an attempt to make sure it is always exhibiting the desired properties, no matter the context, input, or whatever. (When I coined the phrase 'hygienic macro' I was reading a paper by Barendregt who used it in a similar context for dismissing detail concerns about substitution in LC. (My coauthors loved the term and so we took it. Another candidate had been 'synthetic' or something like that.)) -- Matthias _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users