В то время как оценка строки "импортирует Управление. Монада. Состояние" в модуле Haskell, 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 спрятать monads-fd
. Это заставит GHC и GHCi игнорировать наличие monads-fd
по умолчанию до тех пор, пока позже ghc-pkg не выставит monads-fd
, но программное обеспечение, установленное компанией Cabal, все равно сможет строиться на его основе. {-# LANGUAGE PackageImports #-}
и измените оператор импорта на импорт "mtl" Control.Monad.State
. mtl
в строке Build-depends
. Первый лучше всего подходит для случайного взлома, а последний - для производственных сборок.
Все они предполагают, что вам нужен модуль mtl
, а не monads-fd
; в противном случае поменяйте их местами.
Оба пакета реализуют Control.Monad.State, а GHC не знает, какую реализацию он должен предпочесть, поэтому необходимо скрыть один из пакетов от GHC. Похоже, что GHC-флаг -ignore-package
может помочь вам здесь.