Control.Monad.Writer在多个包haskell中找到

时间:2014-01-15 17:59:51

标签: 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安装了一些软件包。

非常感谢提前!

1 个答案:

答案 0 :(得分:6)

是的,这是“标准”。原因是mtl包的历史性重构,以容纳具有多个参数的两种不同样式的处理类型类,例如MonadWriter类:type families functional dependencies

mtl包保留了较旧的功能依赖方法,而monads-tf具有较新的类型系列方法。

由于Haskell生态系统中现在存在使用monads-tf的库,因此不可避免的是,两者都会在典型安装的数据库数据库中结束 - 我个人经历了几个星期。