मुझे लगता है कि एक लिस्प फ़ंक्शन में पारित मान पैरामीटर के नाम से मेल खाने वाले उद्धरण को असाइन किए जाते हैं। हालांकि, मुझे आश्चर्य हुआ कि यह:लिस्प में संग्रहीत फ़ंक्शन पैरामीटर कैसे हैं?
(defun test (x) (print (eval 'x)))
(test 5)
काम नहीं करता है (चर एक्स एक्सबाउंड है)। तो यदि पैरामीटर फ़ंक्शन में प्रतीकों के रूप में संग्रहीत नहीं होते हैं, तो इस उदाहरण में एक्स वास्तव में क्या है? पैरामीटर नाम से मेल खाने वाले प्रतीक से पैरामीटर तक पहुंचने का कोई तरीका है?
अधिक संदर्भ:
defun slice (r1 c1 r2 c2 board)
(dolist (param '(r1 c1 r2 c2)) ;adjust for negative indices
(if (< (eval param) 0)
(set param (+ (length board) (eval param)))))
;Body of function
असल में, मैं उनके मूल्यों में से किसी को पहले चार मापदंडों के माध्यम से पुनरावृति और अगर वे < हैं एक समायोजन बनाना चाहते: मैं करना चाहते हैं क्या कुछ इस तरह है 0. बेशक, मैं एक पैरा कर सकता हूं और प्रत्येक पैरामीटर के लिए एक व्यक्तिगत रेखा रख सकता हूं, लेकिन विचार कर रहा हूं कि मैं चार पैरामीटर में से प्रत्येक के लिए एक ही चीज़ कर रहा हूं, यह क्लीनर लग रहा था। हालांकि, मुझे त्रुटि मिलती है कि परिवर्तनीय आर 1 अनबाउंड है।
यह विशिष्ट दिया गया है:
एक तरह से दोहरा खुद एक मैक्रो होगा बचने के लिए। [एसबीसीएल] (http://www.sbcl.org/manual/index.html) विदेशी फंक्शन इंटरफेस अध्याय आदि में कुछ जानकारी दें। –