संभव डुप्लिकेट:
Why don't Haskell list comprehensions cause an error when pattern match fails?गैर संपूर्ण हास्केल सूची समझ में पैटर्न
आज मैं निम्नलिखित कोड देखा:
Prelude> [a | Just a <- [Just 10, Nothing, Just 20]]
[10, 20]
यह काम करता है। लेकिन मैंने सोचा था कि उपरोक्त सूची समझ बस वाक्यात्मक चीनी है के लिए ...
[Just 10, Nothing, Just 20] >>= (\(Just x) -> return x)
... जिसके लिए हास्केल, जब Nothing
का सामना, एक त्रुटि *** Exception: Non-exhaustive patterns in lambda
फेंकना होगा।
तो मेरा सवाल है: [a | Just a <- [Just 10, Nothing, Just 20]]
क्या (मोनैडिक कोड के संदर्भ में) में अनुवाद करता है जो इसे Nothing
को अनदेखा करता है?
@ephemient: धन्यवाद! जिस पोस्ट से आपने लिंक किया है वह मेरे प्रश्न का उत्तर देता है। और मैंने पाया [एक और] (http://stackoverflow.com/questions/7007222/haskell-list-comprehension-to-combinatory)। मेरे प्रश्न पोस्ट करने से पहले मुझे इन पदों को नहीं मिला क्योंकि वे "संपूर्ण" शब्द नहीं रखते हैं, जो समस्या के लिए हास्केल का शब्द है। (मैं स्टैक ओवरफ्लो में नया हूं और मुझे यकीन नहीं है कि मुझे क्या करना है। क्या मुझे यह प्रश्न हटाना चाहिए? यह अभी भी उन लोगों के लिए उपयोगी होगा जो "[non-] संपूर्ण" टाइप करेंगे।) –
आप हटाने की जरूरत नहीं है - आखिरकार इसे एक डुप्लिकेट के रूप में बंद कर दिया जाएगा, जिसका अर्थ यह है कि यहां से अग्रेषित लोगों के उत्तर के साथ शीर्ष अग्रेषण करने वाले लोगों का एक बड़ा लिंक होगा। और, जैसा कि आप ध्यान देते हैं, मारने के बजाए चारों ओर रखना ज्यादा उपयोगी है :) – ephemient