While evaluating the line "import Control.Monad.State" in a Haskell module, GHC gives me the following error:
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.
How do I resolve this conflict?
Reid Barton
You have several options. Either:
ghc-pkg hide monads-fd
. This will cause GHC and GHCi to ignore the presence of themonads-fd
by default until you laterghc-pkg expose monads-fd
, but software installed by Cabal will still be able to build against it.- Use the
{-# LANGUAGE PackageImports #-}
pragma, and change your import statement toimport "mtl" Control.Monad.State
. - Use Cabal to build your project, and specify
mtl
in theBuild-depends
line.
The first is best for casual hacking, and the last is best for production builds.
These all assume you want the mtl
module and not the monads-fd
module; otherwise swap them.
Both packages implement Control.Monad.State and GHC does not know which implementation it should prefer, so you need to hide one of the packages from GHC. Seems like the -ignore-package <name>
GHC flag might help you here.
来源:https://stackoverflow.com/questions/2048953/control-monad-state-found-in-multiple-packages-haskell