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?

¿Fue útil?

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 la monads-fd forma predeterminada hasta que ghc-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 que import "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
scroll top