This is a question, because I don't understand something. Lexical scoping for functions is usually considered good. People really like the fact that the symbols you use to refer to things will always reference the lexically obvious objects, not whatever happened to be bound to those symbols last. But as far as I can tell, the equivalent idea for macros is hygiene, and that is not embraced. My question is, why not? Is there a difference between macro hygiene and lexical scoping that I don't understand? Are macros the one place where interfaces are easier with dynamic rather than lexical scoping? Or (just thought of this now), does dynamic scoping seem better for macros because it's the only way to get higher-order macros? (Because you can't pass a macro to a macro, so a lot of the common functions don't have macro equivalents.) Thanks for your help. |