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