दो सवाल:आम-लिस्प में, मैं किसी तत्व को किसी सूची में कैसे डाल सकता हूं?
1.I एक समारोह में जगह एक सूची के अंदर एक तत्व सम्मिलित करना चाहते हैं (किसी भी स्थिति लेकिन सूची की शुरुआत में, कारण के लिए प्रश्न 2 देखें) ऐसी है कि:
CL> (defun insert-in-place (the-list after-position new-element) ....) => ...
CL> (setf testy-list (list 'a 'b 'c 'd)) => ...
CL> testy-list => ('A 'B 'C 'D)
CL> (insert-in-place testy-list 1 'BOOOO) => ...
CL> testy-list => ('A 'B 'BOOOO 'C 'D)
2. मुझे लगता है कि सूची में सूची की शुरुआत में एक तत्व डालना एक समारोह के माध्यम से असंभव है क्योंकि तर्क मूल्य से पारित होते हैं, इसलिए जब सूची का पहला विपक्ष सेल पारित होता है, तो यह मूल्य से गुजरता है और यह एक प्रतिलिपि है और इसलिए अपनी कार बदलना केवल एक प्रतिलिपि कार बदलता है, मूल नहीं, हालांकि निम्नलिखित विपक्षी कोशिकाओं को साझा किया जाता है और जगह में बदलना संभव है। क्या मैं सही हूँ?
धन्यवाद। प्रश्न 2 के बारे में: जब आप कॉल (सूची-सूची संशोधित) को संशोधित करने के लिए वास्तव में क्या पारित किया जा रहा है? एक मूल्य या इसके संदर्भ के रूप में परीक्षण सूची का पहला विपक्ष सेल? मेरा मतलब है कि आपने जवाब दिया कि मैं सही नहीं हूं लेकिन मुझे प्रश्न 2 के बारे में मेरे तर्क में दोष नहीं मिल रहा है ... – Paralife
इसके अलावा मैंने इसे अपने आप कर लिया: (rplacd (nthcdr स्थिति lst) (विपक्षी elem (nthcdr (+ 1 स्थिति) lst))) लेकिन आपका बेहतर है। वास्तव में मैं nthcdr को सेट करना चाहता था, लेकिन मैं जिस क्लिनप का उपयोग करता हूं, में nthcdr सेट करने योग्य नहीं है। मुझे आश्चर्य है कि यह इसे सेट करने योग्य है या नहीं। मेरा दूसरा प्रश्न देखें: http://stackoverflow.com/questions/4387967/does-a-setfable-nthcdr-implementation-exist – Paralife
प्रश्न 2 के बारे में: जब आप कॉल (टेस्टी-सूची संशोधित करें) करते हैं, तो आप एक विपक्ष सेल को पास करते हैं ("संदर्भ से")। – koddo