El código de abajo tiene z
como una variable local, sin embargo, se comporta como si se trata de un mundial:¿Las listas de propiedades en Common Lisp se refieren a algún estado global?
(defun foo (m)
(let ((z '(stuff nil)))
(push m (getf z 'stuff))
(print z)))
(foo 1)
(foo 2)
(foo 3)
que sería de esperar que la salida sea
(STUFF (1))
(STUFF (2))
(STUFF (3))
T
pero cuando se ejecuta con SBCL I ver
(STUFF (1))
(STUFF (2 1))
(STUFF (3 2 1))
T
¿Por qué es este el caso? ¿Es este comportamiento peculiar de las listas de propiedades?
Posible duplicado de [persistencia inesperada de datos] (http://stackoverflow.com/questions/18790192/unexpected-persistence-of-data) –