[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: WGD at MIT-MC, KMP at MIT-MC
- Subject: new DEFMACRO
- From: JONL at MIT-MC (Jon L White)
- Date: Mon, 1 Dec 80 08:51:00 GMT
- Cc: (BUG LISP) at MIT-MC, ALAN at MIT-MC, CWH at MIT-MC
- Original-date: 1 DEC 1980 0351-EST
Very simple explanation (and fix) for (defmacro foo () nil):
Date: 30 November 1980 21:59-EST
From: Kent M. Pitman <KMP at MIT-MC>
Date: 26 November 1980 22:58-EST
From: William G. Dubuque <WGD>
(defmacro foo () nil) then do (foo) and you get infinite recursion.
This is the result of a bad interaction between the NIL return value --
which fights with the (OR (MACROFETCH ...) ; NIL falls through!
(MACROMEMO ...)) ; expansion returned
and the fact that the thing being memo-ized isn't CDR'd as it would be
. . .
Something in the new DEFMAX is still losing badly.
Someone should have noticed that DEFMACRO was producing (PROGN FOO-MACROARG)
as the main code, rather than (PROGN FOO-MACROARG NIL) as should have been
expected. This bug is entirely due to the new part of DEFMACRO which tries
to permit a documentation "string" (or symbols, as in the case of MacLISP --
it seems that NIL looked like a "documentation string"). I've fixed this
and installed version 138.
I don't seen anything at all losing badly in the new DEFMAX, but if
you have an example, send it along.