【发布时间】:2020-09-01 15:09:06
【问题描述】:
我有这样的功能
foo :: X -> Y -> Z
我有两个单独的计算来获得X 和Y 类型的变量,但它们可能会失败,所以我使用了 Maybe
calc1 :: A -> Maybe X
calc2 :: B -> Maybe Y
现在我不确定如何使用 monad 操作来获得所需的行为
safe_foo :: Maybe X -> Maybe Y -> Maybe Z
safe_foo Nothing _ = Nothing
safe_foo _ Nothing = Nothing
safe_foo (Just x) (Just y) = Just (foo x y)
最好的方法是什么?
【问题讨论】: