मैं एक गणना के लिए एक इकाई है कि असफल और कुछ प्रवेश करता है हो सकता है:केवल इकाई ट्रांसफार्मर में बाहरी इकाई अपडेट कर रहा है
f1 :: WriterT [String] (Either String) a
मैं एक समारोह है कि असफल नहीं हो लेकिन कुछ प्रवेश करता है:
f2 :: Writer [String] b
f2 से लॉग का उपयोग करके f1 में लेखक मोनैड को अपडेट करने का सबसे अच्छा तरीका क्या है, और f2 गणना के आउटपुट को कैप्चर करें? फिलहाल मैं यह कर रहा हूँ:
f2result <- (\(r,l) -> do {tell l; return r}) (runWriter f2)
मैं लिफ्ट का उपयोग कर रहा एक अलग गणना के साथ आंतरिक इकाई अद्यतन करने के लिए है, तो लेखक के आसपास स्विचन और या तो monads समस्या का समाधान नहीं होगा।
धन्यवाद danr और rampion:
टिप्पणियों में, rampion को इस व्यवस्था में एक समारोह लपेटकर का एक संस्करण दे दी है। मैंने रैप विधि का उपयोग करना चुना है। हालांकि मैं f2 के प्रकार को बदल सकता हूं, यह फ़ंक्शन अन्य संदर्भों में प्रकट होता है, इसलिए मैं किसी विशेष कॉलिंग फ़ंक्शन की आवश्यकताओं के संदर्भ में अपना प्रकार लिखना चाहता हूं। – mskel