gpt4 book ai didi

haskell - 我应该使用 monad 还是 EfforT monad 转换器?

转载 作者:行者123 更新时间:2023-12-02 07:23:58 24 4
gpt4 key购买 nike

我已阅读 this question 。以下是已接受答案的引用:

This instance has been added in base 4.3.x.x, which comes with ghc 7. Meanwhile, you can use the Either instance directly, or, if you are using Either to represent something that may fail you should use ErrorT monad transformer.

我想使用 Either 来做这样的事情:

> (Left "bad thing happened") >>= \x -> Right (x ++ " ...")
Left "bad thing happened"

因此,如果计算的一部分失败,则返回其 Left

实际问题是:为什么我应该使用 ErrorT monad 转换器而不是 Either monad?我是 Haskell 的新手,我有点害怕 monad 转换器,尤其是当我已经在其中编写代码时。

最佳答案

如果适合您的情况,我建议使用Either。如果您想在计算过程中执行一些IO,例如:

x <- mightReturnLeft
y <- liftIO someIOAction
useXandY x y

在这种情况下,Either 是不够的,但 ErrorT 可以。

此外,我建议使用 ExceptT而不是 ErrorTErrorT 依赖于 Error 类,这使得它使用起来更加尴尬。

关于haskell - 我应该使用 monad 还是 EfforT monad 转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26357269/

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