たとえば、2 つのMaybe Bool
値があり、次の機能を実現したいとします。
- 両方が
Just
値の場合、それらの間で値を実行したいと思い||
ます。 - そのうちの 1 つが値で
Nothing
、もう 1 つがJust
値である場合Just
、出力として値が必要です。 - 両方が の場合、出力として
Nothing
必要です。Just False
これは、パターン マッチングを使用して実現できることを知っています。しかし、結果を達成するためにモナド関数を使用することは可能ですか?
liftM2
この場合に機能します:
ghci> liftM2 (||) (Just True) (Just False)
Just True
しかし、1つの入力のいずれかが(他の値が必要な場合)の場合liftM2
に生成されます。すなわち:Nothing
Nothing
Just
ghci> liftM2 (||) (Nothing) (Just False)
Nothing
しかし、私Just False
は上記の場合に欲しいです。
モナド関数を使用してこれを行うことは可能ですか?