在Haskell模块中评估“import Control.Monad.State”行时,GHC给出了以下错误:
Could not find module `Control.Monad.State': it was found in multiple packages: monads-fd-0.0.0.1 mtl-1.1.0.2 Failed, modules loaded: none.
如何解决此冲突?
答案 0 :(得分:35)
您有几种选择。之一:
ghc-pkg hide monads-fd
。这将导致GHC和GHCi默认忽略monads-fd
的存在,直到您稍后ghc-pkg expose monads-fd
,但Cabal安装的软件仍然可以针对它进行构建。{-# LANGUAGE PackageImports #-}
pragma,并将导入语句更改为import "mtl" Control.Monad.State
。mtl
行中指定Build-depends
。第一个最适合随意黑客攻击,最后一个最适合生产构建。
这些都假设您需要mtl
模块而不是monads-fd
模块;否则交换它们。
答案 1 :(得分:1)
两个包都实现了Control.Monad.State,而GHC不知道它应该选择哪个实现,因此你需要隐藏GHC中的一个包。好像-ignore-package <name>
GHC标志可能对你有帮助。