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?

Foi útil?

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 do monads-fd por padrão até você mais tarde ghc-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 para import "mtl" Control.Monad.State.
  • Use Cabala para construir seu projeto e especificar mtl no Build-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
scroll top