Control.Monad.State in mehreren Paketen gefunden Haskell
Frage
Während die Zeile "Import Control.Monad.State" in einem Modul Haskell Auswertung gibt GHC mir folgende Fehlermeldung:
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.
Wie behebe ich diesen Konflikt?
Lösung
Sie haben mehrere Möglichkeiten. Entweder:
-
ghc-pkg hide monads-fd
. Dies führt dazu, GHC und GHCi die Anwesenheit desmonads-fd
standardmäßig, bis Sie späterghc-pkg expose monads-fd
zu ignorieren, aber Software von Cabal installiert wird noch zu bauen gegen sie in der Lage sein. - Verwenden Sie die
{-# LANGUAGE PackageImports #-}
Pragma, und ändern Sie Ihre Import-Anweisung zuimport "mtl" Control.Monad.State
. - Verwenden Sie Cabal Ihr Projekt zu erstellen, und geben Sie
mtl
in derBuild-depends
Linie.
Das ist zunächst am besten für lässige Hacking, und der letzte ist am besten für die Produktion baut.
übernehmen Diese alle Sie mtl
Modul wollen und nicht das monads-fd
-Modul; andernfalls tauschen sie.
Andere Tipps
Beide Pakete implementieren Control.Monad.State und GHC nicht weiß, welche Umsetzung sollte es vorziehen, so dass Sie zu verbergen eines der Pakete von GHC müssen. Scheint, wie die -ignore-package <name>
GHC Flagge könnte Ihnen dabei helfen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow