मैं कभी कभी कार्यों की कम arity संस्करणों, कि एक आंशिक समारोह लौटने के लिए, उदाहरण के लिए परिभाषित करने के लिए यह Clojure में सुविधाजनक मिल गया हैपरिभाषित कम arity आंशिक कार्यों
(defn prefix
([pre string]
(str pre ":" string))
([pre]
(fn [string]
(prefix pre string))))
इसका मतलब है कि आप कर सकते हैं या तो:
(prefix "foo" 78979)
=> "foo:78979"
((prefix "foo") 78979)
=> "foo:78979"
यह काफी हास्केल-ish लगता है और partial
आंशिक कार्यों बनाने की ज़रूरत नहीं बचा जाता है।
लेकिन यह लिस्प में अच्छा कोडन शैली/एपीआई डिजाइन माना जाता है?
यह करी है, हाँ? उपयोगी लगता है। और मुझे लगता है कि यहां इंटरफ़ेस में सुधार किया जा सकता है। यह अच्छा होगा अगर आप इस तकनीक को सामान्य बना सकते हैं; अर्थात, सभी कीवर्ड के साथ फ़ंक्शंस के लिए, यदि आप उस फ़ंक्शन को कीवर्ड के अपूर्ण सेट के साथ कहते हैं, तो यह एक बंदरगाह देता है जो शेष सभी कीवर्ड स्वीकार करता है। यदि सभी कीवर्ड उपभोग किए जाते हैं, तो आपको फ़ंक्शन का मान मिलता है। मैं इसे ऑप्टिमाइज़ेशन तकनीक के रूप में इस्तेमाल कर सकता था। –
मुझे लगता है कि यह अभी भी विचारशील है यदि आप उन्हें पठनीयता के लिए आंशिक रूप से नामित करते हैं जब आप उन्हें परिभाषित करते हैं: (def prefix (आंशिक ...)) तो इसमें दोनों हैं: संदर्भ का नाम और यह स्पष्ट है।ध्यान दें कि आप अब defn का उपयोग नहीं करते लेकिन def- आंशिक आप के लिए समारोह पैदा कर रही है – KIMA