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

Re: (setf (setq x (car y)) z)



The reason I wanted (setf (progn x) y) to work is not because of any
desire for generality, but because any macro that want's to return a
symbol and calls the function displace actually returns
(progn <symbol>), so it is sometimes necessary for setf to understand a
singleton progn.  The extension to longer progns wasn't part of what I
was after when I suggested it.  

Gee whiz, friends!  How about:

(setf (if (random-test x)
	  (car x)
	  (cdr x))
      (compute))

And imagine the hair in figuring out:

(setf (prog1 (caar x) (rplaca x new-car)) foo)

And then there is:

(setf (or x y) z)  and  (setf (and x y) z)

Heck, what about:

(setf (setf ...

Imagine what (setf (do ...) x) has to go through to come up with the
correct code!  Here is an almost endless hole that we can sink our
efferts into!!

I can't imagine that I would ever want to explicitly write any of
these, and I find it hard to believe that I would expect setf to
understand any macro that expanded into a setq.