Subject: Re: Macro-writing in CL
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 8 Jun 2001 04:25:01 GMT
Newsgroups: comp.lang.lisp
Message-ID: <9fpk2t$evaa6$1@fido.engr.sgi.com>
Kent M Pitman  <pitman@world.std.com> wrote:
+---------------
| Duane Rettig <duane@franz.com> writes:
| > For example, the fact that the CL community does not care to
| > continue developing their macro system and the scheme community
| > does, suggests to me that the scheme community is dissatisfied with
| > their macro system, whereas the CL community is satisfied with theirs.
| 
| I think this is a good point.
| 
| I think the Scheme community is puzzled by the fact that CL doesn't
| have a hygienic macro system and yet doesn't run into all kinds of
| problems as a result.
+---------------

Confession: I happen to program in both CL & Scheme and, as it happens,
when I write macros in Scheme I always use "defmacro", since it does the
(to me) obvious & correct thing. [Hygiene? See "gensym".]

+---------------
| There's pretty extensive experience with myriad users and multiple
| implementors over a really long time (in "contemporary programming
| language use" terms) to suggest that the reason no one is "evolving"
| the CL macro system is that it works just fine.
+---------------

That's why I've never bothered to learn R5RS macros, even though they're
"standard" and defmacro isn't. The latter is all I need; I understand what
it does; and all of the implementations of Scheme I use (and of course,
all of the CLs) have it (or something equivalent from which it can be
trivially defined).


-Rob

p.s. It may help that I use to code some *incredibly* complex things
in MACRO-10 (the PDP-10 assembly language) macros way back when...  ;-}
It didn't have "gensym" per se -- you had to manually construct your
own unique macro temp symbols by concatenating assembly-time counters
and local prefixes & suffixes & the like. But now that I think about it,
one could have easily written "gensym" *in* MACRO-10 macros! (I just never
would have called it that, since I hadn't been exposed to Lisp yet.)

-----
Rob Warnock, 31-2-510		<rpw3@sgi.com>
SGI Network Engineering		<http://reality.sgi.com/rpw3/> [until 8/15]
1600 Amphitheatre Pkwy.		Phone: 650-933-1673
Mountain View, CA  94043	PP-ASEL-IA

[Note: aaanalyst@sgi.com and zedwatch@sgi.com aren't for humans ]