重複の可能性:
Haskell のリスト内包表記では、パターン マッチが失敗したときにエラーが発生しないのはなぜですか?
今日、私は次のコードを見ました:
Prelude> [a | Just a <- [Just 10, Nothing, Just 20]]
[10, 20]
できます。しかし、上記のリスト内包表記は構文糖衣にすぎないと思いました...
[Just 10, Nothing, Just 20] >>= (\(Just x) -> return x)
... Haskell が に遭遇するとNothing
、エラーを出力します*** Exception: Non-exhaustive patterns in lambda
。
だから私の質問は次のとおりです。[a | Just a <- [Just 10, Nothing, Just 20]]
(モナドコードの観点から)何に変換されNothing
ますか?