gpt4 book ai didi

haskell - Haskell中带有currying的多输入一元函数

转载 作者:行者123 更新时间:2023-12-02 02:34:57 25 4
gpt4 key购买 nike

我有这样的功能

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)
做这个的最好方式是什么?

最佳答案

你只需要liftA2 ,它被定义为 Applicative 的一部分类型类。

safe_foo = liftA2 foo
或者,在“应用风格”中:
safe_foo mx my = foo <$> mx <*> my

关于haskell - Haskell中带有currying的多输入一元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63690436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com