在评估 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.
我该如何解决这个冲突?
你有几个选择。任何一个:
ghc-pkg hide monads-fd
. 这将导致 GHC 和 GHCimonads-fd
默认忽略 的存在,直到您稍后ghc-pkg expose monads-fd
,但 Cabal 安装的软件仍然能够针对它进行构建。{-# LANGUAGE PackageImports #-}
编译指示,并将您的导入语句更改为import "mtl" Control.Monad.State
.mtl
在该Build-depends
行中指定。第一个最适合休闲黑客,最后一个最适合生产构建。
这些都假设您想要mtl
模块而不是monads-fd
模块;否则交换它们。
这两个包都实现了 Control.Monad.State 并且 GHC 不知道它应该更喜欢哪个实现,因此您需要对 GHC 隐藏其中一个包。似乎-ignore-package <name>
GHC 标志在这里可能对您有所帮助。