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?

person n. 1.8e9-where's-my-share m.    schedule 19.07.2014    source источник
comment
Я могу построить ghc-mtl-1.2.1.0 просто отлично с ghc-7.8.2... может быть какая-то странная путаница препроцессора, с которой вы столкнулись, но я понятия не имею, почему.   -  person leftaroundabout    schedule 20.07.2014
comment
@leftaroundabout Похоже, это не препроцессор. Можете ли вы куда-нибудь вставить свой ghc-pkg --list?   -  person n. 1.8e9-where's-my-share m.    schedule 20.07.2014
comment
gist.github.com/leftaroundabout/bafead50d9e5fb0612d0   -  person leftaroundabout    schedule 20.07.2014
comment
@leftaroundabout спасибо, я проверю это, когда вернусь домой к своему компьютеру.   -  person n. 1.8e9-where's-my-share m.    schedule 20.07.2014
comment
@leftaroundabout Я просмотрел различия, никаких очевидных подсказок. Вот мой список. Вот мой подробный журнал сборки. Можете ли вы опубликовать свою подробную сборку?   -  person n. 1.8e9-where's-my-share m.    schedule 20.07.2014
comment
@leftaroundabout, в конце концов, проблема была в списке пакетов, см. ответ.   -  person n. 1.8e9-where's-my-share m.    schedule 20.07.2014


Ответы (1)


Отвечая на мой собственный вопрос.

Проблема заключалась в пакете transforms-0.4.1.0, который был установлен вместе с converts-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 и понижение версии его зависимостей решили проблему.

person n. 1.8e9-where's-my-share m.    schedule 20.07.2014