Haskell 找不到模块“Control.Monad.Reader';

Haskell 找不到模块“Control.Monad.Reader';,haskell,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. 我对作家蒙纳德也有同样的看法;我想我应该删除其中一个包,但我不想破坏其他包,所以现在我该怎么办,昨天一切正常。我最近遇到了一个类似的问题,有人建议我在其中一个包的名称为“{x}

今天,当我试图用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.

我对作家蒙纳德也有同样的看法;我想我应该删除其中一个包,但我不想破坏其他包,所以现在我该怎么办,昨天一切正常。

我最近遇到了一个类似的问题,有人建议我在其中一个包的名称为“{x}”的地方运行。它在我的情况下工作。

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

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

一个附录:阴谋集团自己照顾自己,所以使用ghc pkg隐藏不会影响它。换句话说,你不会以这种方式破坏
阴谋集团的安装,这让我第一次看到“只需隐藏软件包”的建议时感到担心。顺便说一句,你能和我们在一起真是太好了,西蒙!我找到了,是我的!哦,等等,你不是这个意思。。。