haskell - `EitherT` 的 Applicative 实例在哪里定义?

标签 haskell monad-transformers applicative

我没看到 here根据 EitherT 的定义,也不是 here根据 Applicative 的定义。

它不应该在类型模块或类型类模块中定义,以避免被孤立吗?它在哪里?

最佳答案

docs page you linked EitherT 清楚地表明 EitherT 是一个类型别名:

type EitherT = ExceptT

Type alias for ExceptT

这意味着它不能有自己的实例;它拥有的任何实例都将被定义为它是别名的类型for;在这种情况下 ExceptT

方便的是,它还链接到 ExceptT 的文档。不方便的是,它将这两次 ExceptT 链接到不同的 URL!其中一个似乎是断开的链接(到 mtl 中存在的模块,就好像它存在于 transformers-either 包中一样),但另一个有效,并显示:

(Functor m, Monad m) => Applicative (ExceptT e m)

关于haskell - `EitherT` 的 Applicative 实例在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73604547/

相关文章:

haskell - 在 Haskell 中减少单子(monad)

windows - 运行从Haskell项目构建的exe文件时,停止打开命令提示符

haskell - TypeRep和 "Type"GADT之间的关系

haskell - 尝试在 do block 内使用条件时出现输入 'if' 解析错误

haskell - 声明用于 N×N 元素矩阵和 N 元素列向量相乘的类型类

haskell - “ExceptT ResourceT”与 'ResourceT ExceptT'

haskell - Monad Transformer 内部结构顺序

haskell - 为什么导入 Control.Applicative 允许此错误代码进行类型检查?

haskell - 为 StateT 实现 Applicative (<*>)

haskell - 没有仿函数的应用程序