मेरे लिए धन्यवाद, reducers की मुख्य विचार है कि वे वास्तव कम से map
/filter
/reduce
करते हैं। Reducers निर्दिष्ट नहीं करते हैं कि वे एक संग्रह या किसी अन्य प्रकार की डेटा संरचना पर, या जो कुछ भी उत्पादित करते हैं, वे संग्रह या कुछ और हो सकता है, वे सीरियल या समानांतर में आलसी या उत्सुकता से निष्पादित करते हैं। उदाहरण:
map
/filter
/reduce
एक संग्रह पास किया जाना चाहिए और एक संग्रह का उत्पादन होगा; एक reducer या तो करने की ज़रूरत नहीं है। Reducers का यह विचार transducers में विस्तारित है ताकि एक ही ट्रांसड्यूसर पर संग्रह या core.async
चैनल पर लागू हो सके।
रेड्यूसर निर्दिष्ट नहीं करते हैं कि उन्हें निष्पादित किया जाता है। map
/filter
/reduce
हमेशा संग्रह में एक धारावाहिक तरीके से निष्पादित करें; समानांतर में कभी नहीं। यदि आप समांतर में संग्रह में निष्पादित करना चाहते हैं, तो आपको एक अलग फ़ंक्शन का उपयोग करना होगा: pmap
। आप कल्पना कर सकते हैं कि यदि आप समानांतर में फ़िल्टर करना चाहते हैं, तो आप भी एक फ़ंक्शन pfilter
बना सकते हैं (यह अस्तित्व में नहीं है लेकिन आप इसे लिख सकते हैं)। प्रत्येक फ़ंक्शन के समांतर संस्करण को बनाने के बजाय, रेड्यूसर बस कहते हैं, "मुझे परवाह नहीं है कि मुझे कैसे निष्पादित किया गया है" और यह एक अन्य फ़ंक्शन (fold
रेड्यूसर के मामले में) पर निर्णय लेता है कि यह निष्पादन किया जाना चाहिए कि निष्पादन किया जाना चाहिए या नहीं समानांतर में या नहीं। fold
pmap
से अधिक सामान्य है क्योंकि यह पर लागू होने वाले रेड्यूसर फ़िल्टरिंग या मैपिंग (या दोनों करने के लिए रचित) कर सकते हैं।
सामान्य तौर पर, क्योंकि reducers के बारे में कम मान्यताओं क्या वे पर लागू होगा, क्या वे या उत्पादन कैसे वे लागू होते हैं, वे अधिक लचीले होते हैं और इसलिए की एक व्यापक विविधता में इस्तेमाल किया जा सकता स्थितियों। यह उपयोगी है क्योंकि reducers "यह कैसे करता है" के बजाय "आपका प्रोग्राम क्या करता है" पर ध्यान केंद्रित करता है। इसका अर्थ यह है कि आपका कोड विकसित हो सकता है (उदा। एक धागे से एक बहु थ्रेड या यहां तक कि एक वितरित अनुप्रयोग तक) प्रोग्राम के उस हिस्से को अनिवार्य रूप से स्पर्श किए बिना जो आपके कोड के मूल तर्क को बनाता है।
tks @optevo, यह बहुत बड़ा है, लेकिन आपने जवाब नहीं दिया है कि 'core.reducers' में 'कमजोर' कार्य कैसे काम करता है और क्या आप इसका उदाहरण बना सकते हैं? – babygau