- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近的 cabal 安装升级了我的 transformers 版本来自0.3.0.0至 0.4.1.0 。此次升级带来了有关 ErrorT 的折旧警告。
文档不清楚这只是重命名还是有功能更改?为什么要进行此更改?
最佳答案
功能发生变化。 ErrorT
要求 e
类型是 Error
type class 的成员- 例如,考虑它的 Monad
实例约束。这是相当任意的,并且对于 ErrorT
的功能来说当然不需要。
ExceptT
解除此限制。
引入重命名是为了创建更顺畅的升级途径。当前在其 ErrorT
堆栈中使用并依赖于 Error
约束的人们不必更改代码。想要使用更严格的通用 ExceptT
模块的人可以自由选择这样做。在某些时候,ErrorT
模块可能会被删除。
关于haskell - 从 ErrorT 转换到 exceptT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25820294/
运行类型为 t (ErrorT String IO) a 的代码的最佳方式是什么?来自 t IO a单子(monad)?考虑下面的代码: module Sample where import Syst
是否可以在 ErrorT monad 中累积错误消息?我想积累更多的错误。 最佳答案 您可以使用Control.Applicative.Lift中的Errors应用程序来自变形金刚: ghci> im
我想我缺少对 monad 转换器的一些基本了解,因为我发现自己编写了以下代码: import Control.Monad.Identity import Control.Monad.Error lif
假设我有这两个功能: errorm :: ( MonadError String m ) => Bool -> m Int errorm cond = if cond then return 1 e
最近的 cabal 安装升级了我的 transformers 版本来自0.3.0.0至 0.4.1.0 。此次升级带来了有关 ErrorT 的折旧警告。 文档不清楚这只是重命名还是有功能更改?为什么要
假设我有这两个功能: errorm :: ( MonadError String m ) => Bool -> m Int errorm cond = if cond then return 1 e
我在程序中的不同级别有两个控制结构的类型声明。最底层是Agent,它是一个具有IO 功能的StateT。第二个是另一个具有 Agent 功能的 StateT,第三个 (Plan) 是一个 ErrorT
我想定义一个 monad 转换器,除其他外,它赋予基本 monad 错误功能。如果基本 monad 是的话,转换后的 monad 应该是 MonadPlus 的一个实例,但我不知道如何定义 Monad
我是一名优秀的程序员,十分优秀!