setf
関数呼び出しから返された配列参照で動作しない理由がわかりません。以下の例で、最後の呼び出しが失敗するのはなぜですか?
(setf arr #1a(a b c))
(defun ret-aref (a i)
(aref a i))
(eql (ret-aref arr 0) (aref arr 0))
;succeeds
(progn
(setf (aref arr 0) 'foo)
arr)
;fails
(progn
(setf (ret-aref arr 0) 'bar)
arr)