[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PUSH, or is it SETF? SHOVE maybe?



    Date: 22 July 1981 22:20-EDT
    From: Richard L. Bryan <RLB at MIT-MC>
    Subject: PUSH, or is it SETF?
    To: BUG-LISP at MIT-MC

    In a bare lisp,
	    (PUSH 'X (GET 'Y 'Z))
    finds |Function..24| undefined function.  It has a gentemp marker.

Sorry 'bout that.  MC died a horrible death while I was working on this
stuff and GJC stole my LISPM with modified buffers while I was waiting
for it to come up.

I intruduced it while extending DEFSETF to make it easier to fix this
bug:

    Date: 20 July 1981 21:15-EDT
    From: Richard L. Bryan <RLB at MIT-MC>
    Sender: BIL at MIT-MC
    Subject: Gobble, gobble
    To: BUG-LISP at MIT-MC
    
    The current EXTBAS has SI:EXTEND-LENGTH subr defined as
    (defun si:extend-length (x) (si:extend-length x))
    or something equivalent, expecting a macro definition for si:extend-length
    to come in from EXTHUK.  It did, but after that SI:EXTEND-LENGTH was 
    own-symbol'ified, leading to a short inner loop on si:extend-length
    tail recursing to itself, but not terminating in finite time.
    
    (btw, this is the source of the previous bug I misreported - BIL)

However, WGD pointed out that it is easier and better just to move the
offending LET to inside the SI:XREF, which makes it all work.  Since I
had to do it all over again, thanks to DEC and GJC, I did it WGD's
winning way.  However, my improvement to DEFSETF still stands:  Instead
of just a name of a function, DEFSETF can take a list of functions.
Similarly, in the slot that was always () in the argument pattern, it
will actually take a function name, for arbitrary use by the invert
pattern.