जैसा कि @KarlBielefeldt ने नोट किया है, इस तरह की समस्या के लिए कार्यात्मक दृष्टिकोण इसे पिछले राज्य से एक नया राज्य लौटाने के रूप में देखना है। फ़ंक्शंस स्वयं कोई भी जानकारी नहीं रखते हैं, इसलिए वे हमेशा स्टेट मी से स्टेट एन में अपडेट करेंगे ।
मुझे लगता है कि आप इसे अक्षम पाते हैं क्योंकि आप मानते हैं कि नए राज्य की गणना करते समय पिछली स्थिति को स्मृति में रखा जाना चाहिए । ध्यान दें कि एक पूरी तरह से नया राज्य लिखने या पुराने एक को फिर से लिखने के बीच का विकल्प एक कार्यात्मक भाषा के दृष्टिकोण से एक कार्यान्वयन विवरण है।
उदाहरण के लिए, मान लीजिए कि मेरे पास एक मिलियन पूर्णांकों की सूची है, और दसवें को एक इकाई द्वारा बढ़ाना चाहते हैं। पूरी सूची को उसकी दसवीं स्थिति में एक नए नंबर से कॉपी करना बेकार है, आप सही हैं; लेकिन यह केवल भाषा संकलक या दुभाषिया के लिए ऑपरेशन का वर्णन करने का वैचारिक तरीका है। संकलक या दुभाषिया पहली सूची लेने के लिए स्वतंत्र है और सिर्फ दसवें स्थान को अधिलेखित करता है।
इस तरह से ऑपरेशन का वर्णन करने का लाभ यह है कि कंपाइलर उस स्थिति के बारे में कारण बना सकता है जब कई थ्रेड विभिन्न पदों पर एक ही सूची को अपडेट करना चाहते हैं। यदि ऑपरेशन को "इस स्थिति पर जाएं और जो आप पाते हैं उसे अधिलेखित करें" के रूप में वर्णित किया गया है, तो यह प्रोग्रामर है, न कि संकलक, जो यह सुनिश्चित करने के प्रभारी हैं कि ओवरराइट्स टकराते नहीं हैं।
उस सब के साथ, यहां तक कि हास्केल में, एक राज्य का एक सन्यासी है जो उन परिस्थितियों को मॉडल करने में मदद करता है जहां "राज्य को बनाए रखना" एक समस्या का अधिक सहज समाधान है। लेकिन कृपया कुछ समस्याओं पर भी ध्यान दें जो आपको " स्वाभाविक रूप से स्टेटफुल लगती हैं, जैसे डेटाबेस में लिखना " के पास डाटामिक जैसे अपरिवर्तनीय समाधान हैं । यह तब तक आश्चर्यजनक हो सकता है जब तक आप समझते हैं कि यह एक अवधारणा है, जरूरी नहीं कि इसकी प्रतीति हो।