- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Monad 转换器很棘手,我不确定(=没有良好的直觉)哪一个应该放在最上面。
最佳答案
StateT s (ExceptT e m)
这说:
m
开头现在,“添加异常”意味着您的操作可以通过两种方式终止:使用正常返回值或异常。
“添加状态”意味着状态输出的额外位将包含在正常返回值中。
因此,在StateT s (ExceptT e m)
中,只有在没有异常的情况下,您才会获得结果状态。
另一方面,
ExceptT e (StateT s m)
说:
m
开头“添加状态”意味着状态输出的额外位包含在 m
的返回值中。
但是现在,您添加的异常将作为替代返回值添加到 StateT
monad 内。所以你总是得到一个状态输出,然后你可能会得到一个正常的返回值,或者你可能会得到一个异常。
关于haskell - StateT s (ExceptT e m) 和 exceptT e (StateT s m) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31838776/
现实世界 Haskell 指出 "Transformer stacking order is important" 。但是,我似乎无法弄清楚 ExceptT (ResourceT m) a 和 Res
Monad 转换器很棘手,我不确定(=没有良好的直觉)哪一个应该放在最上面。 最佳答案 StateT s (ExceptT e m) 这说: 以m开头 添加异常(exception)情况 添加状态 现
在 ExceptT Monad 转换器堆栈中,throwE 之后的绑定(bind)表达式将不会被执行。 这是真的吗? 如果是这样,我如何配置编译器或我的工具来检测像这个例子一样的死代码? {-# LA
(这个问题类似于this question,但是那个问题只收到了推荐errors包的评论,我想知道更多细节。) 我正在开发一个程序,该程序使用两个不同的包,它们都返回类型 IO (Either e a
假设我有这段(可以说是误导)代码: import System.Environment (getArgs) import Control.Monad.Except parseArgs :: Excep
我要运行一些计算,这些计算会引发不同种类的异常。我如何将它们链接在do块中而不评估每一个,然后将结果匹配为Either ex result? type IntComp ex = ExceptT ex
最近的 cabal 安装升级了我的 transformers 版本来自0.3.0.0至 0.4.1.0 。此次升级带来了有关 ErrorT 的折旧警告。 文档不清楚这只是重命名还是有功能更改?为什么要
我有一个连接到数据库的函数,然后运行查询。这些步骤中的每一个都会导致 IO (Either SomeErrorType SomeResultType)。 我真正喜欢在学习 Haskell 时使用 Ei
在上一个问题中,我问 Why is there no MonadMask instance for ExceptT? 并得到了许多令人信服的答案,包括图书馆作者,为什么不存在合法的例子。 截至 201
Edward Kmett 的异常库不提供MonadMask ExceptT 的实例. Ben Gamari once asked about this然后得出结论,文档对此进行了解释。这是我能找到的最
我对 Except 很困惑,特别是因为网络上没有好的教程。我不知道如何将此函数从 ExceptT 转换为 Except: data Error = Empty deriving (Show) badF
无论好坏,Haskell 的流行 Servant库使得在涉及 ExceptT err IO 的 monad 转换器堆栈中运行代码变得很常见。 Servant 自己的处理程序 monad 是 Excep
假设我有一个像这样的 monadic 堆栈: import Control.Monad.Trans.Reader import Control.Monad.Trans.Except import Co
我是一名优秀的程序员,十分优秀!