Построение контравариантности с использованием стека приводит к ошибке ограничения из-за невозможности вывести контравариант - PullRequest
0 голосов
/ 29 ноября 2018

При создании моего проекта я получаю ошибки, подобные следующим:

   /tmp/stack19408/contravariant-1.5/src/Data/Functor/Contravariant/Divisible.hs:233:10: error:
        • Could not deduce (Contravariant (Backwards f))
            arising from the superclasses of an instance declaration
          from the context: Divisible f
            bound by the instance declaration
            at src/Data/Functor/Contravariant/Divisible.hs:233:10-47
        • In the instance declaration for ‘Divisible (Backwards f)’
        |
    233 | instance Divisible f => Divisible (Backwards f) where
        |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Я не могу точно определить, что здесь происходит, или ошибка на моем конце или проблема сбиблиотеки участвуют.Я сделал что-то не так?


Я пытался создать наименьший возможный проект, который приведет к этой проблеме.В пустом проекте стека измените преобразователь на ghc-8.6.2 и добавьте зависимости:

extra-deps:
- contravariant-1.5
- StateVar-1.1.1.1
- base-4.12.0.0
- array-0.5.2.0

Добавьте contravariant к dependencies в package.yaml и импортируйте Data.Functor.Contravariant.Divisible в Lib.hs.Это привело к ошибкам компиляции при запуске stack build.

1 Ответ

0 голосов
/ 30 ноября 2018

Это не вы - выпущенные пакеты еще не включены в base-4.12.

Теперь, когда класс Contravariant находится в base, экземпляр для Backwards должен переместиться в transformersгде последний определяется.Есть патч, который добавляет экземпляры , но я не думаю, что он был выпущен для Hackage.

На вашем месте, я бы:

  1. извлекать дарковлокально репо
  2. добавьте локальную проверку как extra-dep
  3. ошибку, которую сопровождающие выпустили transformers
...