Andrei Alexandrescu:
> Back on topic: http://www.apl.jhu.edu/~hall/Lisp-Notes/Macros.html. 
> Compare the simple macro in the beginning and the correct macro at the end.

CLisp macros are messy, they can be not easy to read and understand, and worse 
of all they can fragment the community because every large program that defines 
many complex macros essentially defines a new variety of CLisp. This makes it 
hard to read, modify and reuse for other purposes CLisp code written by other 
people (but allows the creation of domain-specific code, that can reduce 
program size and make it simpler). Python has refused macros mostly because of 
this risk of fragmentation. A significant part of the success of Python comes 
from the ecosystem of tons of little modules that you can download and use in 
your code with usually only little effort. A large usage of macros can kill 
this.

On the other hand I believe that D string mixins, if used to replace some of 
the purposes of CLisp macros, are worse than CLisp macros.

Scheme (and maybe Clojure too) macros are more hygienic so they remove some of 
the problems shown in that Macros.html page, this means that a good Square 
macro written in Scheme looks better and is simpler than that CLips one (on the 
other hand Scheme macros can be a little less powerful, I am not expert enough 
to give you examples).

Bye,
bearophile

Reply via email to