4 ms·
> Can you cite a comment which doesn't seem to understand this? I don't have any on hand, but I've encountered this misunderstanding quite a few times over the
by groovy2shoes 10y ago
> Can you cite a comment which doesn't seem to understand this?
I don't have any on hand, but I've encountered this misunderstanding quite a few times over the years in discussions of macro hygiene. To be clear, I didn't mean to imply that either you or GP don't understand this. It's just something I've noticed before and it seemed like a good time to bring it up.
> And it is wrong; of course macros can be hygienic or not; but macro systems which crank out automatically hygienic macros are also themselves called hygienic. Everyone understands what that means.
I'm not saying that macro systems can't be hygienic. I'm saying that hygiene is a property of macros. It's not wrong to say that a system like syntax-rules is hygienic, considering that it only allows for the definition of hygienic macros. IMO, the line gets a little blurrier for systems like syntax-case, synclos, or explicit renaming. They're also commonly called hygienic because they provide special facilities for defining hygienic macros, but synclos and ER macros aren't really that different from defmacro+gensym when it comes down to semantics.
- kazinator 10y agoI suspect you're just allowing yourself to be overwhelmed by the ambiguity in "hygienic macro system", which can be parsed as ((hygienic macro) system) or (hygienic (macro system)). The former parse attributes the macros as being hygienic, and the system as having to do with that kind of macro (an not itself being called hygienic). You're welcome.
- groovy2shoes 10y agoThing is, every macro system is a ((hygienic macro) system), because you can write hygienic macros with any system. The latter parse makes more sense to me, as it relates that it's a system designed to enable hygienic macros beyond what a direct transformer would provide.