प्रश्न हैं:
- क्या जनरेटर कार्यात्मक प्रोग्रामिंग प्रतिमान को तोड़ते हैं? क्यों या क्यों नहीं?
- यदि हाँ, तो क्या कार्यात्मक प्रोग्रामिंग में जनरेटर का उपयोग किया जा सकता है और कैसे?
निम्नलिखित को धयान मे रखते हुए:
function * downCounter(maxValue) {
yield maxValue;
yield * downCounter(maxValue > 0 ? maxValue - 1 : 0);
}
let counter = downCounter(26);
counter.next().value; // 26
counter.next().value; // 25
// ...etc
downCounter
विधि राज्यविहीन प्रकट होता है। साथ ही, downCounter
एक ही इनपुट के साथ कॉल करना, हमेशा एक ही आउटपुट में परिणाम देगा। हालांकि, एक ही समय में, कॉलिंग next()
लगातार परिणाम नहीं देता है।
मैं अनिश्चित हूं कि क्या जनरेटर कार्यात्मक प्रोग्रामिंग प्रतिमान को तोड़ते हैं या नहीं क्योंकि इस उदाहरण counter
में एक जनरेटर ऑब्जेक्ट है और इसलिए कॉलिंग next()
उसी परिणाम का उत्पादन करेगी जैसे कि एक अन्य जनरेटर ऑब्जेक्ट बिल्कुल उसी के साथ बनाया गया है maxValue
।
साथ ही, someCollection[3]
सरणी पर कॉल करने से हमेशा चौथा तत्व वापस आ जाएगा। इसी तरह, next()
जनरेटर ऑब्जेक्ट पर चार बार कॉल करने पर भी हमेशा चौथा तत्व वापस आ जाएगा।
अधिक संदर्भ के लिए, प्रोग्रामिंग काटा पर काम करते समय ये प्रश्न उठाए गए थे । जिस व्यक्ति ने सवाल का जवाब दिया, उसने सवाल उठाया कि क्या कार्यात्मक प्रोग्रामिंग में जनरेटर का उपयोग किया जा सकता है या नहीं और वे राज्य को धारण करते हैं या नहीं।