2010-01-12 20 views
21

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:Control.Monad.State encontrado en múltiples paquetes de Haskell

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 ?

Respuesta

35

Tiene varias opciones. O bien:

  • ghc-pkg hide monads-fd. Esto causará que GHC y GHCi ignoren la presencia del monads-fd de forma predeterminada hasta más tarde ghc-pkg expose monads-fd, pero el software instalado por Cabal aún podrá construir contra él.
  • Utilice el pragma {-# LANGUAGE PackageImports #-} y cambie su estado de importación a import "mtl" Control.Monad.State.
  • Utilice Cabal para compilar su proyecto y especifique mtl en la línea Build-depends.

La primera es mejor para el hackeo casual, y la última es la mejor para las compilaciones de producción.

Todos estos asumen que desea el módulo mtl y no el módulo monads-fd; de lo contrario, cambiarlos.

+0

Gracias por esta respuesta, tengo el mismo problema para una compilación fuera de cabal, no sabía qué hacer. –

1

Ambos paquetes implementan Control.Monad.State y GHC no sabe qué implementación debería preferir, por lo que debe ocultar uno de los paquetes de GHC. Parece que la bandera -ignore-package <name> GHC puede ayudarte aquí.

Cuestiones relacionadas