haskell - 在多个包haskell中发现Control.Monad.Writer

标签 haskell ghc cabal hackage

我尝试导入 Control.Monad.Writer像这样的模块:

import Control.Monad.Writer
ghc版本 7.4.1 给出以下错误:
Ambiguous module name `Control.Monad.Writer':
      it was found in multiple packages: monads-tf-0.1.0.1 mtl-2.1.1

有一个类似问题的问题和解决方法here .

尽管在这个线程中给出了解决方案,但我的问题是:
这是cabal和ghc的标准配置吗?
- 如果是这样:模块是否有理由默认包含在两个包中?
- 如果没有:(可能)发生了什么,可以撤消吗?

如果这很重要:我正在开发 Debian 7.3 wheezy 并安装了 haskell-platform包裹。此外,我使用 cabal install 安装了一些软件包。 .

提前谢谢了!

最佳答案

是的,这是“标准”。原因是对 mtl 的历史性重构。包以适应具有多个参数的两种不同样式的处理类型类,例如 MonadWriter 类(class):type familiesfunctional dependencies .
mtl包保留了旧的功能依赖方法,而 monads-tf 具有较新的类型族方法。

因为现在 Haskell 生态系统中有库使用 monads-tf ,在典型安装中,两者都不可避免地会出现在包数据库中——我个人已经经历了几个星期。

关于haskell - 在多个包haskell中发现Control.Monad.Writer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21144912/

相关文章:

haskell - 使用 warp 时出现 "no instance for YesodDispatch"错误

haskell - 'undefined' 如何在 Haskell 中工作

haskell - 在haskell中评估 `groupBy`

haskell - 将 GHC 全局包数据库中的所有包更新到最新版本

haskell - cabal 已经彻底崩溃;接下来我可以尝试什么?

haskell - 为什么 Stackage 目前停留在 cabal 1.18 上?

string - GHC 接受的 unicode 字符范围

haskell - 我可以从程序中更改堆栈大小限制吗?

pointers - 为什么带有多态 Ptr 的 `peek` 在与绑定(bind)一起使用时会返回 GHC.Prim.Any?

haskell - tinfo6 代表什么?