मेरे पास एक एल्गोरिदम है जो एक इंटैम्प पर काम करता है जो मुझे लगता है कि सबसे अच्छा रूप से व्यक्त किया जाएगा। नक्शे में मूल्य एक्स के लिएक्या डेटा.मैप/डेटा.इन्टैप के लिए एक मोनाड उदाहरण मौजूद है?
- देखो: यह मैं जैसी चीजों कहना चाहते हैं, है।
- यदि यह मानदंड से मेल खाता है, तो इस मान को मानचित्र से हटा दें।
- लूप जब तक मानचित्र में कोई और मूल्य मौजूद न हो।
यह काफी एक दो लाइन प्रत्यावर्तन के रूप में व्यक्त करने के लिए तुच्छ हो सकता है, लेकिन वास्तविक एल्गोरिथ्म एक छोटे से अधिक जटिल है, कई लुकअप और विलोपन से जुड़े हैं, इसलिए मैं do
अंकन में यह व्यक्त करने में सक्षम होना चाहते हैं ।
do
insert 5 20
(ma, mv) <- lookup 4
case mv of
Just v -> delete (fromJust ma)
Nothing -> return()
ईमानदारी से मुझे यकीन है कि कैसे सबसे अच्छा यह व्यक्त करने के लिए नहीं कर रहा हूँ:
एक मानक इकाई की तरह "राज्य" जहां राज्य Data.Map
या Data.IntMap
, जहां मैं की तरह कुछ कर सकते हैं का प्रतिनिधित्व करती है है। lookup
के कारण यह किसी प्रकार के MaybeT IntMap m
स्टैक या कुछ से लाभान्वित प्रतीत होता है।
मैं काम पर Data.IntMap
आधारित अपने ही राज्य इकाई को परिभाषित करने की कोशिश कर का एक सा कर किया था, यहां तक कि जहाँ तक हो गया insert
और delete
काम करने के रूप में है, लेकिन कैसे lookup
से निपटने के लिए साथ एक छोटी सी अटक गया। अधिकतर मुझे लगता है कि शायद ऐसा कुछ है जो किसी ने पहले ही हल कर लिया है, लेकिन मुझे इसे हैकेज पर नहीं मिल रहा है।
वाह। धन्यवाद। मुझे ट्रांसफॉर्मर का उपयोग करने के लिए वास्तव में उपयोग करने की आवश्यकता है। यह उदाहरण व्यावहारिक रूप से उनका उपयोग करने के तरीके को दिखाने में एक बड़ी सहायता है। सभी मोनड ट्यूटोरियल आपको दिखाते हैं कि स्क्रैच से एक कैसे बनाया जाए, लेकिन शायद ही कभी वे आपको दिखाएंगे कि पहले से ही क्या उपलब्ध है इसका लाभ उठाना है। – Steve
@Steve मुझे मोनाड ट्रांसफार्मर को समझने में क्या मदद मिली है, उन्हें केवल मोनैड के ढेर के रूप में या परतों के साथ प्याज और रिकॉर्ड फ़ील्ड या प्रत्येक स्तर पर प्रत्येक मोनैड ट्रांसफॉर्मर प्रकार पॉप/छिलके के कार्यों को चलाने के लिए नीचे के स्तर को प्रकट करने के लिए विचार करना है। –