मैं हास्केल के लिए बिल्कुल नया हूं और धीरे-धीरे यह विचार प्राप्त कर रहा हूं कि मोनाड के अस्तित्व में कुछ गड़बड़ है। रियल वर्ल्ड हास्केल warns against its use ("एक बार फिर, हम अनुशंसा करते हैं कि आप लगभग असफल होने से बचें!")। मैंने अभी देखा है कि रॉस पैटरसन ने इसे "एक वार्ट, डिजाइन पैटर्न नहीं" कहा है back in 2008 (और उस धागे में काफी कुछ समझौता हुआ)।क्या मुझे मोनाड का उपयोग करने से बचने चाहिए?
डॉ राल्फ लामेल talk on the essence of functional programming देखकर, मैंने एक संभावित तनाव को समझना शुरू कर दिया जो मोनाड को विफल कर सकता है। व्याख्यान में, आधार मोनैडिक पार्सर (लॉगिंग, राज्य इत्यादि) के लिए विभिन्न मोनैडिक प्रभाव जोड़ने के बारे में राल्फ वार्ता। कई प्रभावों को आधार पार्सर में बदलने और कभी-कभी उपयोग किए जाने वाले डेटा प्रकारों में परिवर्तन की आवश्यकता होती है। मुझे लगा कि सभी मोनैड के लिए 'असफल' का जोड़ा एक समझौता हो सकता है क्योंकि 'असफल' इतना आम है और आप जितना संभव हो सके 'आधार' पार्सर (या जो कुछ भी) में परिवर्तन से बचना चाहते हैं। निस्संदेह, कुछ प्रकार की 'असफल' पार्सर्स के लिए समझ में आता है लेकिन हमेशा नहीं, कहें, राज्य के बारे में पूछें/प्राप्त करें या रीडर के स्थानीय/पूछें।
मुझे बताएं कि क्या मैं गलत ट्रैक पर जा सकता हूं।
क्या मुझे मोनाड का उपयोग करने से बचने में असफल होना चाहिए? मोनाड के विकल्प क्या असफल हैं? क्या कोई वैकल्पिक मोनैड पुस्तकालय हैं जिनमें "डिज़ाइन वार्ट" शामिल नहीं है? मैं इस डिजाइन निर्णय के आसपास के इतिहास के बारे में और कहां पढ़ सकता हूं?
[रियल वर्ल्ड हास्केल कहते हैं] (http://book.realworldhaskell.org/read/monads.html#monads.monad.fail) "[कई monads में] 'विफल' 'त्रुटि' का उपयोग करता है। 'त्रुटि' को कॉल करना आमतौर पर अत्यधिक अवांछनीय है, क्योंकि यह एक अपवाद फेंकता है कि कॉलर्स या तो पकड़ नहीं सकते हैं या उम्मीद नहीं करेंगे। " – Miikka
संक्षिप्त उत्तर: हाँ। –
मेरा मानना है कि पैटर्न विफलताओं को संभालने के लिए "विफल" की आवश्यकता होती है जब आप ऐसा करते हैं: "बस x <- somethingReturningIoMaybe"। –