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.