5

たとえば、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は上記の場合に欲しいです。

モナド関数を使用してこれを行うことは可能ですか?

4

3 に答える 3