'foo
प्रतीक FOO मूल्यांकन करता है।
#'foo
खाद्य नाम से जुड़े फ़ंक्शन का मूल्यांकन करता है।
लिस्प में एक प्रतीक को फ़ंक्शन के रूप में बुलाया जा सकता है जब प्रतीक फू के पास फ़ंक्शन बाध्यकारी होता है। यहां कार एक प्रतीक है जिसमें एक फ़ंक्शन बाध्यकारी है।
लेकिन यह काम नहीं करता:
(flet ((foo (a) (+ a 42)))
(mapcar 'foo '(1 2 3 4 5)))
प्रतीक स्थानीय शाब्दिक समारोह का उपयोग नहीं करता है क्योंकि FOO के रूप में और लिस्प प्रणाली शिकायत जब foo
एक समारोह कहीं परिभाषित नहीं है यही कारण है कि।
हम लिखने की ज़रूरत:
(flet ((foo (a) (+ a 42)))
(mapcar #'foo '(1 2 3 4 5)))
यहाँ (समारोह foo) या इसके आशुलिपि संकेतन # 'foo शाब्दिक स्थानीय समारोह FOO को दर्शाता है।
भी ध्यान रखें कि में
(funcall #'foo ...)
बनाम
(funcall 'foo ...)
बाद में एक और अविवेक कर सकता है, क्योंकि यह प्रतीक से समारोह देखने के लिए की जरूरत है, जबकि # 'foo समारोह को दर्शाता है सीधे।
सारांश: प्रतीक, बाध्यकारी एक समारोह बुला के माध्यम से प्रतीक काम करता है एक समारोह है
हैं।
स्रोत
2011-02-05 10:15:37