mac - Control.Monad.State encontrado en mĂșltiples paquetes haskell
instalar cabal (2)
Al evaluar la línea "importar Control.Monad.State" en un módulo 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 resuelvo este conflicto?
Ambos paquetes implementan Control.Monad.State y GHC no saben qué implementación debería preferir, por lo que debe ocultar uno de los paquetes de GHC. Parece que el -ignore-package <name>
GHC -ignore-package <name>
podría ayudarte aquí.
Tienes varias opciones. Ya sea:
-
ghc-pkg hide monads-fd
. Esto hará que GHC y GHCi ignoren la presencia de lasmonads-fd
por defecto hasta que más tardeghc-pkg expose monads-fd
, pero el software instalado por Cabal aún podrá compilarse contra ellas. - Use el pragma
{-# LANGUAGE PackageImports #-}
, y cambie su declaración deimport "mtl" Control.Monad.State
paraimport "mtl" Control.Monad.State
. - Use Cabal para compilar su proyecto, y especifique el
mtl
en la líneaBuild-depends
.
Lo primero es lo mejor para el hackeo informal, y lo último es lo mejor para las construcciones de producción.
Todos suponen que desea el módulo mtl
y no el módulo monads-fd
; De lo contrario intercambiarlos.