GHC-MTL не в состоянии построить с GHC-7,8
Я пытаюсь собрать ghc-mtl-1.2.1.0 с ghc-7.8.3, и я получаю эти сообщения об ошибках:
Control/Monad/Ghc.hs:42:15:
No instance for (GHC.MonadIO Ghc)
arising from the 'deriving' clause of a data type declaration
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (GHC.ExceptionMonad Ghc)
Control/Monad/Ghc.hs:46:15:
No instance for (MonadIO GHC.Ghc)
arising from the 'deriving' clause of a data type declaration
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (MonadIO Ghc)
Control/Monad/Ghc.hs:49:15:
No instance for (GHC.MonadIO Ghc)
arising from the 'deriving' clause of a data type declaration
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (GHC.GhcMonad Ghc)
Те же ошибки с ghc-7.8.2.
Я попытался выяснить, какой из более чем 9000 типов и / или модулей называется Ghc
и / или GHC
и / или MonadIO
отвечает за это, но пока не повезло.
Итак, мои вопросы:
- Какие изменения ответственны за эту поломку?
- Можно ли это исправить без понижения версии с 7.8.3?
1 ответ
Отвечая на мой собственный вопрос.
Проблема заключалась в пакете transformers-0.4.1.0, который был установлен вместе с transformers-0.3.0.0, который поставляется с ghc. Пакет трансформаторов обеспечивает Control.Monad.IO.Class.MonadIO
учебный класс. Он был втянут в сборку дважды, один раз из трансформаторов - 0.4.1.0 и один раз из трансформаторов - 0.3.0.0, что привело к конфликту.
Я видел дубликат пакета, но не понимал, что это было источником проблемы. Моя ошибка заключалась в том, что у меня есть скрытые трансформаторы-0.4.1.0 с ghc-pkg hide
, попытался собрать ghc-mtl, проблема осталась, и я решил, что причина не в трансформаторах. Сокрытия, конечно, недостаточно, я должен был его убрать.
Удаление трансформаторов-0.4.1.0 и понижение его зависимостей решило проблему.