Der Code hat unter z
als lokale Variable, aber es verhält sich, als ob es sich um eine globale ist:Bezeichnen Eigenschaftenlisten in Common Lisp einen globalen Status?
(defun foo (m)
(let ((z '(stuff nil)))
(push m (getf z 'stuff))
(print z)))
(foo 1)
(foo 2)
(foo 3)
ich die Ausgabe
(STUFF (1))
(STUFF (2))
(STUFF (3))
T
aber wenn es mit SBCL ich laufen erwarten siehe
(STUFF (1))
(STUFF (2 1))
(STUFF (3 2 1))
T
Warum ist das der Fall? Ist dieses Verhalten Eigenschaftslisten eigen?
Mögliches Duplikat [Unexpected Persistenz von Daten] (http://stackoverflow.com/questions/18790192/unerwartete Persistenz von Daten) –