[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
SETF on LDB constructs
- To: DCP at MIT-MC
- Subject: SETF on LDB constructs
- From: Jon L White <JONL at MIT-MC>
- Date: Sat, 23 Jan 82 15:16:00 GMT
- Cc: RWK at MIT-MC, BUG-LISP at MIT-MC
- Original-date: 23 January 1982 10:16-EST
Date: 16 January 1982 13:35-EST
From: David C. Plummer <DCP at MIT-MC>
I BUGged this last year, and I just got screwed by it again:
(macroexpand '(setf (ldb 0410 (arraycall fixnum foo 0))
(length bar)))
==> ((LAMBDA (|T..120| |T..121|)
(SETQ |T..120| (DPB |T..121| 410 |T..120|))
|T..121|)
(ARRAYCALL FIXNUM FOO 0)
(LENGTH BAR))
It appears that if the new value involves a computation, setf
gets quite confused.
The SETF inversion process is a murky one, especially for the 'composed'
operators like ARRAYCALL, PROGN, and LDB; RWK knows the most about this
code, and should probably look into it (he has promised, again!, to do so.)