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