今天当我尝试在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得到了同样的东西;我以为我应该删除其中一个软件包,但我不想打破其他软件包,所以现在应该怎么办,昨天一切都没有任何问题。
答案 0 :(得分:6)
您最近安装了monads-fd
,可能是您安装的其他内容的依赖项。 monads-fd
和mtl
包都包含模块Control.Monad.Reader
,因此GHC在编译导入它的代码时不知道使用哪一个。你需要以某种方式解决歧义:
-hide-package <package>
标志来隐藏其中一个包,或ghc-pkg hide <package>
隐藏包。如果软件包安装在您的主目录中,则可能需要使用ghc-pkg --user hide <package>
(某些平台上的默认设置)。build-depends
文件中的.cabal
字段准确说出您所依赖的哪个冲突软件包答案 1 :(得分:1)
我最近遇到了类似的问题,有人建议我运行ghc-pkg hide {x}
,其中'{x}'是其中一个软件包的名称。它适用于我的情况。