क्या हैस्केल में शुद्ध कार्यों के लिए चर के स्थानीय प्रतियों को बदलना संभव है, जिस तरह से क्लोजर Functional Programming Is A Scam! by David Nolen में उल्लिखित किया जा सकता है? यदि नहीं, तो इसके कारण क्या हैं, और यदि ऐसा कोई उदाहरण है तो कोई मुझे बता सकता है?क्या हास्केल में चर के स्थानीय प्रतियों को बदलने के लिए शुद्ध कार्यों के लिए यह संभव है?
Functions that look pure to callers but internally use mutation में एक समान प्रश्न पूछा गया था और आम सहमति यह थी कि उत्परिवर्तन करने के लिए शुद्ध कार्यों के लिए यह ठीक था, जब तक उत्परिवर्तन चर की स्थानीय प्रतियों पर उत्परिवर्तन किया गया था (यानी उत्परिवर्तन का प्रभाव नहीं है समारोह से बचें और एक गैर-स्थानीय प्रभाव डालें)।
सवाल तब पैदा हुआ जब मैं शेन (Local mutation, global mutation, mutable datastructures, Bubblesort in Qi) है, जो Bubblesort in Common Lisp में नहीं करता सूची उत्परिवर्तित, आम तुतलाना के लिए और तुलना bubblesort है, जो सूची उत्परिवर्तित है में बुलबुला तरह अनुवाद। नतीजा यह था कि मैंने पाया कि (सामान्य लिस्प में) संस्करण जो सूची को उत्परिवर्तित करता है, उस सूची की तुलना में बहुत बड़ी सूचियों के लिए, सूची को उत्परिवर्तित नहीं करता था।
धन्यवाद। "हास्केल विकी" में सबसे पुराना उदाहरण यह स्पष्ट करता है कि एक शुद्ध कार्य स्थानीय उत्परिवर्तनों को कैसे नियोजित कर सकता है। – artella