Il codice qui sotto ha z
come variabile locale, ma si comporta come se si tratta di una globale:Gli elenchi di proprietà in Common Lisp si riferiscono ad alcuni stati globali?
(defun foo (m)
(let ((z '(stuff nil)))
(push m (getf z 'stuff))
(print z)))
(foo 1)
(foo 2)
(foo 3)
mi aspetterei l'uscita di essere
(STUFF (1))
(STUFF (2))
(STUFF (3))
T
ma quando si esegue con SBCL I vedi
(STUFF (1))
(STUFF (2 1))
(STUFF (3 2 1))
T
Perché è questo il caso? Questo comportamento è peculiare agli elenchi di proprietà?
Possibile duplicato del [la persistenza dei dati imprevisto] (http://stackoverflow.com/questions/18790192/Inattesa-persistenza-dei dati) –