मेरे पास मॉड्यूल है जहां एक वैश्विक वातावरण (पड़ोसी आईपी पते आदि जैसी कुछ बाधाओं को परिभाषित करना) प्रारंभिक कार्य को कॉल करके बनाया और प्रारंभ किया गया है। बाद के कार्यों को इन बाधाओं का उपयोग करते समय इन बाधाओं का उपयोग करना चाहिए।वैश्विक चर और पाठक मोनैड
जबकि सिद्धांत रूप में मैं समझता हूं कि पाठक मोनाड क्या करता है मुझे पूरा यकीन नहीं है कि मैं इसे अपनी समस्या, एएसपी पर कैसे लागू कर सकता हूं।
उपयोगकर्ता द्वारा परिभाषित पर्यावरण को शुरू करने के लिए इसका उपयोग कैसे किया जा सकता है और प्रारंभिक कार्य में डेटा/तर्क के रूप में पारित किया जा सकता है। मेरा मतलब है, पाठक मोनद को वास्तविक मूल्य प्राप्त करना है जो कहीं से वैश्विक अपरिवर्तनीय वातावरण बनाते हैं। मैं चाहूँगा कि मूल्यों पाठक इकाई के माध्यम से
myinitial :: arg1 -> arg1 -> IOString
की तरह एक प्रारंभ करने समारोह कॉल जहां बाद मेंarg1
औरarg2
वैश्विक बनने से बाद के कार्यों के लिए सुलभ अपरिवर्तनीय डेटा पढ़ा जाता है (?)मैं समारोह तर्क के रूप में इन पर्यावरण मूल्यों कैसे उपयोग कर सकते हैं जैसे
recvFrom s arg1
जहांarg1
मेरे पर्यावरण से वैश्विक अपरिवर्तनीय डेटा है। याif arg2 > arg1 then ... else ...
मैं निश्चित रूप से एक विन्यास फाइल कर सकता है, लेकिन मुझे लगता है कि एक विन्यास फाइल ज्यादा लचीलापन को दूर ले जाएगा।
[संपादित करें] मैं पूछने के बारे में समझता हूं, लेकिन अतिरिक्त "पॉइंटफ्री-जैसी" तरीके नहीं होनी चाहिए ताकि कार्य हस्ताक्षर को सही तरीके से परिभाषित किया गया हो तो वैश्विक/पर्यावरण अपरिवर्तनीय छोड़ा जा सकता है? this लागू करने के लिए मुझे या तो मुझे फिर से प्रतिक्रिया करने की आवश्यकता होगी।
आंशिक रूप से काम करता है, जैसा कि इस प्रश्न में उल्लिखित है कि मेरे पास ** मॉड्यूल ** है जिसमें कई कार्य हैं; उनमें से एक प्रारंभिक कार्य है जो पर्यावरण बनाता है। मॉड्यूल से कार्य जिन्हें बाद में कहा जाता है, पर्यावरण का उपयोग करना चाहिए। क्या पाठक मोनड के साथ यह संभव है? –
लेकिन यह कैसे काम करना चाहिए? आपके/मेरे उदाहरण में प्रारंभकर्ता फ़ंक्शन कुछ कहता है जैसे 'config config = config blabla' और बाद के फ़ंक्शन को' परिणाम = runReader उदाहरण कॉन्फ़िगरेशन 'करने की आवश्यकता होगी; - हालांकि बाद के फ़ंक्शन को 'कॉन्फ़िगरेशन' नहीं पता है। –
[यह जिस्ट] देखें (https://gist.github.com/2924160) जिसमें एक साधारण उदाहरण है। मॉड्यूल 1 में, हम एक ऐसे फ़ंक्शन को परिभाषित करते हैं जो वैश्विक वातावरण को प्रारंभ करता है, और कुछ ऐसे कार्य जो वैश्विक पर्यावरण पर निर्भर करते हैं। मॉड्यूल 2 में केवल एक मुख्य फ़ंक्शन होता है जो पर्यावरण को प्रारंभ करता है, और 'runReader' (** संपादित करें: ** माफ़ी,' का उपयोग करके उस पर निर्भर फ़ंक्शंस को कॉल करता है, मैंने उस मूल टिप्पणी को हटा दिया जिसे आपने उत्तर दिया और इसे इसके साथ बदल दिया।) –