क्या कोई निम्नलिखित व्यवहार को समझा सकता है? विशेष रूप से, फ़ंक्शन हर बार एक अलग सूची क्यों देता है? some-list
क्यों नहीं कहा जाता है जब हर बार समारोह कहा जाता है '(0 0 0)
?यह फ़ंक्शन हर बार एक अलग मूल्य क्यों देता है?
(defun foo()
(let ((some-list '(0 0 0)))
(incf (car some-list))
some-list))
आउटपुट:
> (foo)
(1 0 0)
> (foo)
(2 0 0)
> (foo)
(3 0 0)
> (foo)
(4 0 0)
धन्यवाद!
संपादित करें:
इसके अलावा, क्या इस समारोह को लागू करने, यह मानते हुए की सिफारिश की तरह से मैं उत्पादन '(1 0 0)
हर बार करने के लिए समारोह चाहते है?
आह, अब समझ में आता है। स्पष्ट स्पष्टीकरण के लिए धन्यवाद। –
शायद यह जोड़ना अच्छा होगा कि quasiquoting भी ताजा सूचियों को वापस करने की गारंटी नहीं है। – 6502
"जब तक आप नहीं जानते, आप क्या कर रहे हैं" शाब्दिक डेटा को संशोधित करने का व्यवहार अपरिभाषित है। Spec के अनुसार, आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं (निश्चितता के साथ), तो "आपको हमेशा ** ** शाब्दिक सूचियों (जैसे '(0 0 0)) केवल स्थिरांक के रूप में उपयोग करना चाहिए"। –