Common Lisp mapcar ' vs #' -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 3 जवाब
मैं mapcar का उपयोग कर रहा हूँ आम लिस्प, और मैंने उन उदाहरणों को देखा है जो # और 'के सामने' का उपयोग करते हैं लेकिन वे दोनों एक ही काम करते हैं। क्या इसका उपयोग किया जाता है?
CL-USER & gt; (मैपकार '+' (1 2) '(2 3)) (3 5) सीएल-उपयोगकर्ता & gt; (नक्शाकार # '+' (1 2) '(2 3)) (3 5)
वे अक्सर विनिमेय होते हैं, लेकिन एक ही बात नहीं होती है नक्शाकार
एक फ़ंक्शन डिज़िनेेटर लेता है - एक प्रतीक को प्रतीक-फ़ंक्शन
नामित किया जाता है या किसी फ़ंक्शन को निर्दिष्ट करने वाला फ़ंक्शन - जो फ़ंक्शन ऑब्जेक्ट के लिए ज़ोर दिया जाएगा # 'foo
एक पाठक मैक्रो है जो (फ़ंक्शन फ़ू)
का विस्तार करता है, जो foo
के कार्यात्मक मान को देखकर फ़ंक्शन ऑब्जेक्ट देता है लैक्सिकल वातावरण, अर्थात अंदरूनी flet
, लेबल
, या वैश्विक फ़ंक्शन परिभाषा इस प्रकार, इसे जबरन करने के लिए कुछ भी करने की आवश्यकता नहीं है। यदि आप mapcar
के साथ एक उद्धृत प्रतीक का उपयोग करते हैं, हालांकि, यह symbol-function
का उपयोग करके एक फ़ंक्शन से जुटा है, जो गैर-वैश्विक फ़ंक्शन परिभाषाओं के साथ काम नहीं करेगा, क्योंकि इस मामले में शामिल कोई fboundp
चिन्ह नहीं है उदाहरण के लिए:
सीएल-उपयोगकर्ता & gt; (फेल ((फ्रोब (एक्स) (1 + x))) (नक्शाकार # 'फ्रॉब' (1 2 3))) (2 3 4) सीएल-यूजर & gt; (फेल ((फ्रोब (एक्स) (1 + x))) (मैपकार 'फ्रॉब' (1 2 3))); मूल्यांकन # & lt; CCL :: असम्बद्ध-फ़ंक्शन-कॉल # x18AB7F1E & gt; पर निरस्त कर दिया गया।
इसके अलावा,, जो स्वयं या म्यूचुअल्य रीडिफाइनिंग कोड के परिणाम हैं।
सामान्य में, # 'का उपयोग करके
आजकल व्यापक रूप से पसंद किया जा रहा है , संभवतः क्योंकि इसे और अधिक सुसंगत माना जाता है - # 'का उपयोग करके
हर जगह आप एक फ़ंक्शन पास करना चाहते हैं, यह एक सरल नियम है सीएएल में फ़ंक्शन डिज़ाइनर लेते हुए कार्यों के साथ इस्तेमाल किए गए उद्धृत प्रतीकों को मैं शायद ही कभी देखता हूं। अन्य बोलियों में हालांकि, विशेष रूप से पुराने या गतिशील रूप से इंपैस लिस्प जैसे स्कॉपी वाले लोगों को इन कार्यों के उद्धृत प्रतीकों को पार करना काफी सामान्य है।
Comments
Post a Comment