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

arp*_*pho 4 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.
Run Code Online (Sandbox Code Playgroud)

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

Sim*_*low 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