में अपवाद फेंक नहीं है मेरा प्रश्न सरल है। क्यों गलत पैटर्न मिलान शायद मोनड में अपवाद फेंक नहीं है। tryConstuctHTTPTask समारोह मेंक्यों हो सकता है पैटर्न मिलान शायद मोनड
data Task = HTTPTask {
getParams :: [B.ByteString],
postParams :: [B.ByteString],
rawPostData :: B.ByteString
} deriving (Show)
tryConstuctHTTPTask :: B.ByteString -> Maybe Task
tryConstuctHTTPTask str = do
case decode str of
Left _ -> fail ""
Right (Object trie) -> do
Object getP <- DT.lookup (pack "getParams") trie
Object postP <- DT.lookup (pack "postParams") trie
String rawData <- DT.lookup (pack "rawPostData") trie
return $ HTTPTask [] [] rawData
देखो: स्पष्टता के लिए। मुझे लगता है कि जब पैटर्न मेल नहीं खाता है (उदाहरण के लिए "ऑब्जेक्ट getP") हमें कुछ "प्रीलूड.एक्सप्शन" प्राप्त करना होगा, इसके बजाय मुझे "कुछ भी नहीं" मिलता है। मुझे यह व्यवहार पसंद है लेकिन मुझे समझ में नहीं आता क्यों।
धन्यवाद।
मैं इस मोनाड के मूल स्रोत कोड को कहां देख सकता हूं। – Anton
@ एंटन: आप इसे ['Data.Maybe' मॉड्यूल] के स्रोत में पा सकते हैं (http://haskell.org/ghc/docs/6.12.1/html/libraries/base-4.2.0.0/src/ डेटा-होय.html), लेकिन परिभाषा बस 'असफल _ = कुछ भी नहीं' है। – sepp2k
मुझे पैटर्न मिलान प्रक्रिया नहीं मिली। केवल (बस एक्स) >> = के = के x – Anton