Subject: Re: Non-Lisp "macro" system closest to Common Lisp's?
From: rpw3@rpw3.org (Rob Warnock)
Date: Sun, 26 Oct 2003 02:34:46 -0600
Newsgroups: comp.lang.lisp
Message-ID: <SEWdnRR3wuC7GgaiXTWc-g@speakeasy.net>
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