कोड नीचे z
एक स्थानीय चर के रूप में है, फिर भी यह बर्ताव करता है जैसे कि यह एक वैश्विक है:सामान्य लिस्प में संपत्ति सूचियां कुछ वैश्विक राज्यों का संदर्भ लें?
(defun foo (m)
(let ((z '(stuff nil)))
(push m (getf z 'stuff))
(print z)))
(foo 1)
(foo 2)
(foo 3)
मैं उत्पादन
(STUFF (1))
(STUFF (2))
(STUFF (3))
T
होने की अपेक्षा करेंगे लेकिन जब यह SBCL मैं के साथ चल रहा देखें
(STUFF (1))
(STUFF (2 1))
(STUFF (3 2 1))
T
ऐसा क्यों है? क्या यह व्यवहार संपत्ति सूचियों के लिए विशिष्ट है?
[डेटा का अप्रत्याशित हठ] (के संभावित डुप्लिकेट http://stackoverflow.com/questions/187901 9 2/अप्रत्याशित-स्थिरता-डेटा) –