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.
この競合を解決するにはどうすればよいですか?
いくつかのオプションがあります。また:
ghc-pkg hide monads-fd
。これにより、GHCとGHCiは、monads-fd
後で使用するまでデフォルトでの存在を無視しますghc-pkg expose monads-fd
が、Cabalによってインストールされたソフトウェアはそれに対してビルドできます。{-# LANGUAGE PackageImports #-}
、インポートステートメントをに変更しますimport "mtl" Control.Monad.State
。mtl
し、Build-depends
行で指定します。1つ目はカジュアルなハッキングに最適で、最後の1つはプロダクションビルドに最適です。
これらはすべて、mtl
モジュールではなくモジュールが必要であることを前提としていmonads-fd
ます。それ以外の場合は交換してください。
どちらのパッケージも Control.Monad.State を実装しており、GHC はどちらの実装を優先すべきかを認識していないため、パッケージの 1 つを GHC から非表示にする必要があります。-ignore-package <name>
GHCフラグがここで役立つようです。