Peter Seibel <peter@javamonkey.com> wrote:
+---------------
| So I'm trying to place Lisp macros in some context relative to other
| things that go by the name of "macros". Obvious examples I can think
| of are:
|
| - macro assembers
+---------------
I have commented on this several times before[1], but the ancient
PDP-10 assembler named "MACRO-10" really *deserved* its name! Its
macro system allowed you to do all manner of compile-time computation
[though not quite as much as Lisp's, since you couldn't read/write
files other than to "include" them], including accumulating state
through the course of a compilation [in compile-time variables] and
planting the result as data or code objects at the end. When I first
started using DEFMACRO [2] after years of suffering with C's so-called
"macros" my first thought was: "Wow! A macro system better than MACRO-10!"
Note: BLISS macros weren't bad, either, but weren't nearly as rich as
MACRO-10's. BLISS "structures", on the other hand, were quite interesting:
Imagine a kind of macro that tells the compiler how to interpret array
references, so that "A[I,J,K] := .A[I,J,K] + 17" might actually be a
database update!
-Rob
[1] <URL:http://groups.google.com/groups?q=rpw3+focal+macro-10>
[2] O.k., so it was in a Scheme (Jaffer's SCM), but it was still DEFMACRO.
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607