Control.Monad.State encuentra en paquetes múltiples Haskell
Pregunta
Si bien la evaluación de la línea "Control.Monad.State importación" en un módulo de Haskell, GHC me da el siguiente 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.
¿Cómo puedo resolver este conflicto?
Solución
Existen varias opciones. O bien:
-
ghc-pkg hide monads-fd
. Esto hará que GHC y GHCi hacer caso omiso de la presencia de lamonads-fd
forma predeterminada hasta queghc-pkg expose monads-fd
más tarde, pero el software instalado por Cabal todavía será capaz de construir en contra de ella. - Utilice el pragma
{-# LANGUAGE PackageImports #-}
, y cambiar su declaración de importación para queimport "mtl" Control.Monad.State
. - Uso Cabal para construir su proyecto, y especificar en la línea de
mtl
Build-depends
.
El primero es mejor para la piratería casual, y el último es el mejor para la producción de construcciones.
Todo esto presupone que desea el módulo mtl
y no el módulo de monads-fd
; de lo contrario ellos intercambiar.
Otros consejos
Los dos paquetes implementan Control.Monad.State y GHC no sabe qué implementación se debe preferir, por lo que necesita para ocultar uno de los paquetes de GHC. Parece que la bandera -ignore-package <name>
GHC podría ayudar aquí.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow