[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Misfeature: macros expanding into declarations
- To: TIM@MIT-MC
- Subject: Misfeature: macros expanding into declarations
- From: Richard Mark Soley <SOLEY@MIT-MC>
- Date: Sun, 5 May 85 20:42:51 EST
- Cc: common-lisp@SU-AI, Fahlman@CMU-CS-C, RAM@CMU-CS-C, isrlist@GYRE, sgr@SCRC-STONY-BROOK
- In-reply-to: Msg of Sat 4 May 85 18:26:24 EST from Tim McNerney <TIM>
Date: Sat, 4 May 85 18:26:24 EST
From: Tim McNerney <TIM>
To: Fahlman at CMU-CS-C
cc: TIM, common-lisp at SU-AI, RAM at CMU-CS-C
Re: Misfeature: macros expanding into declarations
Date: Sat, 4 May 1985 07:36 EDT
From: Rob MacLachlan <RAM at CMU-CS-C.ARPA>
The Common Lisp feature of allowing a macro to expand into
declarations ought to be flushed; it complicates much code while
giving no useful return.
Although this "misfeature" makes life much harder on the Lisp
implementor and the macro writer, its semantics are not
without utility. Let me illustate this with a couple of simple examples:
Implementor, shmimplementor! I don't think we're trying to
optomize things for the implementor, but CERTAINLY we care about
the macro writer, 'cause that's EVERYBODY! One thing this
feature overlooks is the (admittedly bad) behavior of some macro
writers that write overly-circular code, in which too-early
expansion of macros kills the program. We've all seen the
garbage codes that must be loaded interpreted first and THEN
compiled; I've ported a couple of systems that depended on this
rubbish and had troubles because of the early macro expansion
(which I eventually had to turn off). I'll send anyone who cares
my wonderful Symbolics Common Lisp function
SI:BREAK-THE-SYSTEM-FOR-THE-SAKE-OF-NISP.
Anyway, at LEAST if we're going to continue to have this feature,
there must be some flag that is set when we're doing "early"
macro expansion so that the macro writer can tell how to expand,
i.e., *EXPANDING-FOR-DECLARATIONS*.
-- Richard Soley