| One of the problems with macros, it seems, is hygiene - a problem which seems to be on a lot of people's minds considering Arc is a new Lisp variant. I've tried doing some googling of my own and looking up on how hygienic macros are implemented. However, I haven't really found anything - yet in discussions of hygiene (macros) it seems that people often refer to a way to actually make them. Could someone perhaps post a link to some sites, or give an explanation of the 'standard' way to do hygienic macros, if there is one? (And from what I've understood... Scheme's macros don't REALLY give you hygiene.) Also, one of the problems with Common-Lisp-like macros is variable capture, right? As in, a function gets shadowed by a local variable, so the macro ends up producing code that calls the wrong function or just fails. (Correct me if I'm saying this the wrong way or if I'm just plain wrong :)) But, couldn't this be solved with a module system? I was thinking that with a Java-like package system, you could just refer to the function you actually mean. Like you can refer to classes by their full name package.name.ClassName, you could refer to functions and macros the same way. Er... am I solving a non-existent problem here? Because the way I understood it, that was one of the problems with non-hygienic macros. Anyway, what do you think? |