[Main website]


In CL, macros can be not hygienic, and sometime this is necesary for introducing advanced side-effects. Sometime they have dynamic-binding, because they capture the content of public variables at run-time.

In Scheme, macro are hygienic by construction, but they are less powerfull.

A good apporach can be:

  • allows non hygienic-macro
  • warn if some part of the macro is potentially non-hygienic
  • the programmer can put a meta-info note, saying that he is aware of the fact, and it is intendeed