在多个包haskell中找到Control.Monad.State

Bil*_*ill 21 haskell cabal hackage

在Haskell模块中评估"import Control.Monad.State"行时,GHC给出了以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个冲突?

Rei*_*ton 35

你有几个选择.或者:

  • ghc-pkg hide monads-fd.这将导致GHC和GHCi monads-fd默认忽略默认情况,直到稍后ghc-pkg expose monads-fd,但Cabal安装的软件仍然可以针对它进行构建.
  • 使用{-# LANGUAGE PackageImports #-}pragma,并将import语句更改为import "mtl" Control.Monad.State.
  • 用惊天动地来构建你的项目,并指定mtlBuild-depends行.

第一个是最好的休闲黑客,最后一个最适合生产构建.

这些都假设您需要mtl模块而不是monads-fd模块; 否则交换他们.