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 StORE.

The parcels are available from the downloads page.

A draft of my notes are at StSM-Overview.html