+ जैसे साधारण फ़ंक्शन का उपयोग करते समय, यह वास्तव में कोई फर्क नहीं पड़ता कि आप किसका उपयोग करते हैं।
सामान्य तौर पर, विचार यह है कि reduce
एक संचित ऑपरेशन है। आप वर्तमान संचय मूल्य और अपने संचय समारोह के लिए एक नया मूल्य प्रस्तुत करते हैं। फ़ंक्शन का परिणाम अगले पुनरावृत्ति के लिए संचयी मान है। तो, आपके पुनरावृत्तियों जैसे दिखते हैं:
cum-val[i+1] = F( cum-val[i], input-val[i] ) ; please forgive the java-like syntax!
लागू करने के लिए, विचार यह है कि आप एक फ़ंक्शन को कॉल करने का प्रयास कर रहे हैं, जो कई अदिश तर्कों की अपेक्षा कर रहा है, लेकिन वे वर्तमान में एक संग्रह में हैं और उन्हें बाहर निकालने की आवश्यकता है। इसलिए, कहने के बजाय:
vals = [ val1 val2 val3 ]
(some-fn (vals 0) (vals 1) (vals 2))
हम कह सकते हैं:
(apply some-fn vals)
और इसे इसके समकक्ष परिवर्तित किया गया है:
(some-fn val1 val2 val3)
तो, "लागू करें" का उपयोग अनुक्रम के चारों ओर "कोष्ठक को हटाने" जैसा है।
sum
हैसेल में एक अंतर्निहित फ़ंक्शन क्यों शामिल नहीं है ? एक बहुत ही आम ऑपरेशन की तरह लगता है।