Control.monad.state encontrado em vários pacotes Haskell
Pergunta
Ao avaliar a linha "importar controle.monad.state" em um módulo Haskell, o GHC me dá o seguinte erro:
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.
Como faço para resolver esse conflito?
Solução
Você tem várias opções. Qualquer:
ghc-pkg hide monads-fd
. Isso fará com que GHC e GHCI ignorem a presença domonads-fd
por padrão até você mais tardeghc-pkg expose monads-fd
, mas o software instalado pela Cabal ainda poderá construir contra ele.- Use o
{-# LANGUAGE PackageImports #-}
Pragma e mude sua declaração de importação paraimport "mtl" Control.Monad.State
. - Use Cabala para construir seu projeto e especificar
mtl
noBuild-depends
linha.
O primeiro é o melhor para hackers casuais, e o último é o melhor para construções de produção.
Todos eles assumem que você deseja o mtl
módulo e não o monads-fd
módulo; Caso contrário, troque -os.
Outras dicas
Ambos os pacotes implementam o Control.monad.state e o GHC não sabem qual implementação ele deve preferir; portanto, você precisa ocultar um dos pacotes do GHC. Parece o -ignore-package <name>
A bandeira do GHC pode ajudá -lo aqui.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow