My initial motivation for looking into macros was somewhat trivial. I had heard the Common Lisp zealots talk about macros and how they made various things easier and how any language without proper syntax macros was inferior and beneath consideration. Being a self confessed Smalltalk zealot, I found this state of affairs annoying and decided that I would see if I could build a macro system for Smalltalk if for no other reason than to show that it could be done.
I received a number of interesting reactions to this plan
when I mentioned it to other Smalltalk developers. Most of
the reactions I read as a "Blub" response, the reaction Paul Graham described as happening when a
programmer encounters a language or language feature
higher up the power scale and doesn't appreciate
it. These people would typically claim that it was
not a necessary feature, everything you could do with
macros could be done using various features of
Smalltalk. I do not dispute this, save to observe that
the same could be said for a Turing machine.
So I developed an experimental implementation of syntax
macros for VisualWorks 7.3 which was informed greatly by
the implementation of macros found in the Slate language.
Unfortunately I messed up the source management and I
had to fix that to move it into another image. This
has been done and the result is on the Cincom Public
The parcels are available from the downloads page.
A draft of my notes are at StSM-Overview.html