Установка agda не удалась при дублировании объявлений экземпляров

Я пытаюсь дать Агде шанс, но не могу его установить. Я запускаю GHC 7.8.3 в песочнице Кабала.

Failed to install Agda-2.4.0.1
Build log ( /Users/jsnavely/project/agda/.cabal-sandbox/logs/Agda-2.4.0.1.log ):
[1 of 1] Compiling Main             ( /var/folders/dh/ckhr9p0j3kq3bx12176p7rlw0000gn/T/Agda-2.4.0.1-77992/Agda-2.4.0.1/dist/dist-sandbox-eeb4211c/setup/setup.hs, /var/folders/dh/ckhr9p0j3kq3bx12176p7rlw0000gn/T/Agda-2.4.0.1-77992/Agda-2.4.0.1/dist/dist-sandbox-eeb4211c/setup/Main.o )
Linking /var/folders/dh/ckhr9p0j3kq3bx12176p7rlw0000gn/T/Agda-2.4.0.1-77992/Agda-2.4.0.1/dist/dist-sandbox-eeb4211c/setup/setup ...
Configuring Agda-2.4.0.1...
Building Agda-2.4.0.1...
Preprocessing library Agda-2.4.0.1...
[  1 of 272] Compiling Agda.Utils.Maybe.Strict ( src/full/Agda/Utils/Maybe/Strict.hs, dist/dist-sandbox-eeb4211c/build/Agda/Utils/Maybe/Strict.o )
[  2 of 272] Compiling Agda.Utils.SemiRing ( src/full/Agda/Utils/SemiRing.hs, dist/dist-sandbox-eeb4211c/build/Agda/Utils/SemiRing.o )
[  3 of 272] Compiling Agda.TypeChecking.Monad.Debug ( src/full/Agda/TypeChecking/Monad/Debug.hs, dist/dist-sandbox-eeb4211c/build/Agda/TypeChecking/Monad/Debug.o )
[  4 of 272] Compiling Agda.Utils.Cluster ( src/full/Agda/Utils/Cluster.hs, dist/dist-sandbox-eeb4211c/build/Agda/Utils/Cluster.o )

src/full/Agda/Utils/Cluster.hs:50:10:
    Duplicate instance declarations:
      instance Monad m => Functor (EquivT s x y m)
        -- Defined at src/full/Agda/Utils/Cluster.hs:50:10
      instance Functor m => Functor (EquivT s c v m)
        -- Defined in ‘Data.Equivalence.Monad’
cabal: Error: some packages failed to install:
Agda-2.4.0.1 failed during the building phase. The exception was:
ExitFailure 1

Я был бы счастлив распаковать пакет каббалы, но я не уверен, с чем я возился. Можем ли мы удалить одно из определений?

2 ответа

Решение

Проблема в том, что equivalence библиотека ( hackage) не определила Functor экземпляр для EquivT и по этой причине Агда определила свою собственную. Последние версии (0.2.4 и более поздние) добавили этот отсутствующий экземпляр, и теперь существует конфликт с Agda.

У вас есть в основном два варианта: либо перейти на equivalence-0.2.3 или удалите экземпляр из исходных файлов Agda. Я проверил и реализации совпадают. Тем не менее, Agda один имеет другие ограничения (как видно из сообщения об ошибке):

instance Monad   m => Functor (EquivT s x y m)  -- Agda
instance Functor m => Functor (EquivT s c v m)  -- equivalence

Таким образом, хотя экземпляр можно безопасно удалить, возможно (хотя и маловероятно), что будут некоторые ограничения класса нарушенного типа - например, тип с Monad экземпляр, но без Functor один.

Также рассмотрите возможность сообщения об этой проблеме на официальном багтрекере. Насколько я могу судить, об этом еще не сообщалось.

Эта проблема исправлена ​​в git(hub) версии Agda. Исправление будет выпущено с 2.4.0.2.

Другие вопросы по тегам