मैं वर्तमान में एक प्रोजेक्ट लिख रहा हूं जहां मैं ListT
मोनैड ट्रांसफॉर्मर का भारी उपयोग करता हूं। सादे सूचियों का उपयोग करते समय, नोडेटर्मिनिज्म को लागू करना बहुत आसान है। हालांकि एक बार मुझे अपना कोड ListT
में परिवर्तित करना पड़ा, तो यह अधिक जटिल मिला।सूचियों और सूची टी मोनैड ट्रांसफार्मर के बीच कैसे साफ रूप से परिवर्तित करें?
एक साधारण उदाहरण के रूप में: [a]
वास्तव में दो कार्यों रचना की आवश्यकता है ListT a
करने से परिवर्तित:
conv :: (Monad m) => [a] -> ListT m a
conv = ListT . return
हालांकि यह आसान है, मैं इसे पहले से ही वहाँ नहीं है हैरान हूं।
सवाल:
- वहाँ कुछ बेहतर तरीका nondeterminism जहां एक इकाई ट्रांसफार्मर की जरूरत है संभाल करने के लिए है?
- क्या सूचियों और
ListT
के बीच स्पष्ट रूप से आगे और पीछे परिवर्तित करने के लिए कोई तकनीक/पुस्तकालय हैं?
सटीक कारण काफी जटिल हैं, इसलिए मैं नहीं है वास्तव में उस पर बहुत अधिक विस्तृत करना चाहते हैं।
हां, मैं मानता हूं कि 'conv' एक साधारण कार्य है। मुझे आश्चर्य है कि यह पहले से ही नहीं है। 'ListT' मॉड्यूल में शायद ही कोई उपयोगिताएं हैं जो मुझे महसूस करती हैं जैसे मैं पहिया को फिर से शुरू करता हूं। बस इतना ही। – julkiewicz