让我们说,我有两个Maybe Bool价值,我想实现以下功能:
- 如果两者都是
Just值,我想||在它们之间执行值。 - 如果其中一个是值,
Nothing另一个是Just值,那么我希望该Just值作为输出。 - 如果它们都是
Nothing,那么我想要Just False作为输出。
我知道这可以使用模式匹配来实现。但是是否可以使用任何一元函数来获得结果?
liftM2适用于这种情况:
ghci> liftM2 (||) (Just True) (Just False)
Just True
但是当任何一个输入是(我想要另一个值)时liftM2会产生。IE:NothingNothingJust
ghci> liftM2 (||) (Nothing) (Just False)
Nothing
但我想Just False在上述情况下。
是否可以使用任何一元函数来做到这一点?