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

在多个包中找到Control.Monad.Writer haskell,haskell,ghc,cabal,hackage,Haskell,Ghc,Cabal,Hackage,我试图像这样导入Control.Monad.Writer模块: import Control.Monad.Writer ghc7.4.1版出现以下错误: Ambiguous module name `Control.Monad.Writer': it was found in multiple packages: monads-tf-0.1.0.1 mtl-2.1.1 有一个问题与类似的问题和解决方法 尽管本文给出了解决方案,但我的问题是: 这是阴谋集团和ghc的标准配置吗? -

我试图像这样导入
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
有一个问题与类似的问题和解决方法

尽管本文给出了解决方案,但我的问题是:
这是阴谋集团和ghc的标准配置吗?
-如果是:是否有理由默认将模块分为两个包?
-如果没有:发生了什么(可能发生了),它可以被撤销吗

如果这很重要:我正在开发Debian 7.3 wheezy,并安装了
haskell平台
软件包。此外,我还使用
cabalinstall
安装了一些软件包

非常感谢

是的,这是“标准”。原因是对包进行了历史性的重构,以适应两种不同风格的处理类型类和多个参数,如class:and

mtl
包保留了较旧的函数依赖关系方法,而具有较新的类型族方法


由于Haskell生态系统中现在有一些库使用了
monads tf
,这两个库都不可避免地会出现在典型安装的软件包数据库中——我个人已经体验了几个星期了。

您是否发现了使用
monads tf
编写的新软件包?我认为它实际上被
mtl
的流行所否定。你能用
PackageImports
解决这个问题吗?我在ghci中经常提到这个问题。正如链接的答案所暗示的,在阴谋集团的包中,你只需要选择依赖哪一个。我还没有找到monads tf的真正原因,我只知道我有它:-)我怀疑
MonadCatchIO transformers
是间接原因:iirc,你可以使用
ghc pkg hide monads tf
使mtl成为默认值。这不会影响阴谋集团的计划,只影响ghci/ghc。