आप apply
का प्रयोग कर एक समारोह है कि एक है कि बहस के लिए एक एकल अनुक्रम पर काम करता है के लिए कई तर्क पर काम करता है परिवर्तित करने के लिए से है। आप अनुक्रम से पहले तर्क भी डाल सकते हैं। उदाहरण के लिए, map
कई अनुक्रमों पर काम कर सकता है। यह उदाहरण (ClojureDocs से) मैट्रिक्स को स्थानांतरित करने के लिए map
का उपयोग करता है।
user=> (apply map vector [[:a :b] [:c :d]])
([:a :c] [:b :d])
एक डाला तर्क यहाँ vector
है। तो apply
user=> (map vector [:a :b] [:c :d])
प्यारा करने के लिए फैलता है!
पुनश्च वैक्टर का एक अनुक्रम के बजाय वैक्टर का एक वेक्टर लौटने के लिए vec
में पूरी बात लपेट:
user=> (vec (apply map vector [[:a :b] [:c :d]]))
हम यहां हैं, तो vec
(partial apply vector)
के रूप में परिभाषित किया जा सकता है, हालांकि यह नहीं है ।
लिस्प -1 और लिस्प -2 के बारे में चिंता: 1 और 2 किसी दिए गए संदर्भ में नामों की संख्या को इंगित कर सकता है। एक लिस्प -2 में, आपके पास एक ही नाम के साथ दो अलग-अलग चीजें (एक फ़ंक्शन और एक चर) हो सकती हैं। इसलिए, जहां भी कोई भी वैध हो सकता है, आपको अपने प्रोग्राम को किसी चीज़ के साथ सजाने की ज़रूरत है जिससे आप इसका मतलब बता सकें। शुक्र है, क्लोजर (या योजना ...) एक नाम को केवल एक चीज़ को इंगित करने की अनुमति देता है, इसलिए ऐसी कोई सजावट आवश्यक नहीं है।
यहाँ लागू समारोह के स्रोत कोड के साथ एक सार है: https://gist.github.com/purplejacket/36de7061061ec9c49734 – Purplejacket