sperber(a)informatik.uni-tuebingen.de (Michael Sperber
[Mr. Preprocessor]) writes:
Craig> I think I see what you're driving at, but I'm not
sure that
Craig> it's as important as it's being made out to be. It's easy
Craig> enough to use MAKE-SYMBOL to create safe variable names for
Craig> the macro and still maintain readability.
Sure, but there's no guarantee that a given macro has hygienic
behavior. Generally, maintaining hygiene this way is pretty
tedious, which is why programmers usually don't go to the necessary
lengths.
Unfortunately, it is true that maintaining hygiene using MAKE-SYMBOL
and GENSYM is hard, especially if you wish not to cons unnecessary
symbols. Take a look at `let-specifier' in the latest XEmacs sources,
and to what lengths one must go to write safe macros. That was very
tedious, and not in the least fun to write.
On the other hand, in Lisp you cannot be screwed by binding CONS, or
anything like that. Also, I have no idea how hygienic macro facility
works in Scheme.
As I said, having to expand the macro is totally counterproductive.
The great thing about Scheme macros is that I basically never have
to do this. I certainly never have to do it in order to check
hygiene. (Moreover, expanding the macros cannot tell two uninterned
symbols with the same name apart, can it?)
It certainly can. Try it!
--
Hrvoje Niksic <hniksic(a)srce.hr> | Student at FER Zagreb, Croatia
--------------------------------+--------------------------------
4. Thou shalt not warlorde a sig if it bee the sig of Kibo, nor if
it bee the sig of the Inner Circle.