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