找不到模块`Control.Monad.Reader'

时间:2010-08-13 10:45:13

标签: haskell

今天当我尝试在Geany中编译我的代码时出现了这个错误

Could not find module `Control.Monad.Reader':
  it was found in multiple packages: monads-fd-0.1.0.1 mtl-1.1.0.2
Compilation failed.

我为Writer monad得到了同样的东西;我以为我应该删除其中一个软件包,但我不想打破其他软件包,所以现在应该怎么办,昨天一切都没有任何问题。

2 个答案:

答案 0 :(得分:6)

您最近安装了monads-fd,可能是您安装的其他内容的依赖项。 monads-fdmtl包都包含模块Control.Monad.Reader,因此GHC在编译导入它的代码时不知道使用哪一个。你需要以某种方式解决歧义:

  • 如果您直接使用GHC或GHCi
    • 在命令行上使用-hide-package <package>标志来隐藏其中一个包,或
    • 默认使用ghc-pkg hide <package>隐藏包。如果软件包安装在您的主目录中,则可能需要使用ghc-pkg --user hide <package>(某些平台上的默认设置)。
  • 您可以使用Cabal,并使用build-depends文件中的.cabal字段准确说出您所依赖的哪个冲突软件包

答案 1 :(得分:1)

我最近遇到了类似的问题,有人建议我运行ghc-pkg hide {x},其中'{x}'是其中一个软件包的名称。它适用于我的情况。