нужны дополнительные категории, но в конфигурации стека нет указанной версии - PullRequest
1 голос
/ 20 апреля 2020

Я пишу небольшую Haskell программу, которая требует импорта двух модулей Control.Functor.Algebra и Control.Morphism.Hylo.

Я искал в Google. Эти два модуля можно найти в category-extras .

Так что я добавил category-extras к package.yaml:

dependencies:
- base >= 4.7 && < 5
- category-extras

Затем позвоните stack build, но произошла ошибка:

E:\work-category-theory\quick-sort>stack build
Stack has not been tested with GHC versions above 8.6, and using 8.8.3, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail

Error: While constructing the build plan, the following exceptions were
encountered:

In the dependencies for quick-sort-0.1.0.0:
    category-extras needed, but the stack configuration has no specified
                    version  (latest matching version is 1.0.2)
needed since quick-sort is a build target.

Some different approaches to resolving this:

  * Recommended action: try adding the following to your extra-deps
    in E:\work-category-theory\quick-sort\stack.yaml:

- category-extras-1.0.2@sha256:511a5668e05af6617d94080e866c9a496e0abd7625d961264755614a73b517f1,10259

Plan construction failed.

Следуя инструкциям, я добавил category-extras-1.0.2@sha256:511a5668e05af6617d94080e866c9a496e0abd7625d961264755614a73b517f1,10259 к extra-deps в stack.yaml:

extra-deps:
  - category-extras-1.0.2@sha256:511a5668e05af6617d94080e866c9a496e0abd7625d961264755614a73b517f1,10259

Но все равно не получилось:

E:\work-category-theory\quick-sort>stack build
Stack has not been tested with GHC versions above 8.6, and using 8.8.3, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for category-extras-1.0.2:
    categories needed, but the stack configuration has no specified version  (latest matching version is 1.0.7)
    comonad-extras needed, but the stack configuration has no specified version  (latest matching version is 4.0.1)
    comonad-transformers needed, but the stack configuration has no specified version  (latest matching version is 4.0)
    comonads-fd needed, but the stack configuration has no specified version  (latest matching version is 4.0)
    groupoids needed, but the stack configuration has no specified version  (latest matching version is 4.0)
    indexed-extras needed, but the stack configuration has no specified version  (latest matching version is 0.2)
    profunctor-extras needed, but the stack configuration has no specified version  (latest matching version is 4.0)
    representable-functors needed, but the stack configuration has no specified version  (latest matching version
                           is 3.2.0.2)
    representable-profunctors needed, but the stack configuration has no specified version  (latest matching version
                              is 3.2)
needed due to quick-sort-0.1.0.0 -> category-extras-1.0.2

Some different approaches to resolving this:

  * Recommended action: try adding the following to your extra-deps in E:\work-category-theory\quick-sort\stack.yaml:

- categories-1.0.7@sha256:e707f8ac06eac755cb508aa67de64ab2e33ce1c54aebb6f43f64c615aa5234f6,1636
- comonad-extras-4.0.1@sha256:60c93aa274239086d96d162c3c8bf7cde33a3e8470ecb56461b2f77d2625521e,1321
- comonad-transformers-4.0@sha256:cdc81f6837836ec4b120ced8503b54a7f1e230e08971cc01717dcd16ba1ceb28,831
- comonads-fd-4.0@sha256:92ed08f50f64aa9ce57214c9f0539e0244225ef4c934065dff819a751b89eeaf,817
- groupoids-4.0@sha256:7d26a2cc5e557773b565f2433b898d7472404a03bafde51fec5f4a7c7936812e,836
- indexed-extras-0.2@sha256:e7e498023e33016fe45467dfee3c1379862e7e6654a806a965958fa1adc00304,1349
- profunctor-extras-4.0@sha256:b436587378964546df3063dad44504fd698cce0f714ce089c1e3b499f063940d,874
- representable-functors-3.2.0.2@sha256:f15e598ca712171408d919803a48dcf786c94e9596a65336a3d66d0886ca60c5,1877
- representable-profunctors-3.2@sha256:d7d902ab21de5bcf9ceeb1b13529aa835a818dad00e75da999241508f89f85c2,786

Plan construction failed.

Следуя инструкциям, я продолжаю добавлять extra-deps в stack.yaml:

extra-deps:
  - category-extras-1.0.2@sha256:511a5668e05af6617d94080e866c9a496e0abd7625d961264755614a73b517f1,10259
  - categories-1.0.7@sha256:e707f8ac06eac755cb508aa67de64ab2e33ce1c54aebb6f43f64c615aa5234f6,1636
  - comonad-extras-4.0.1@sha256:60c93aa274239086d96d162c3c8bf7cde33a3e8470ecb56461b2f77d2625521e,1321
  - comonad-transformers-4.0@sha256:cdc81f6837836ec4b120ced8503b54a7f1e230e08971cc01717dcd16ba1ceb28,831
  - comonads-fd-4.0@sha256:92ed08f50f64aa9ce57214c9f0539e0244225ef4c934065dff819a751b89eeaf,817
  - groupoids-4.0@sha256:7d26a2cc5e557773b565f2433b898d7472404a03bafde51fec5f4a7c7936812e,836
  - indexed-extras-0.2@sha256:e7e498023e33016fe45467dfee3c1379862e7e6654a806a965958fa1adc00304,1349
  - profunctor-extras-4.0@sha256:b436587378964546df3063dad44504fd698cce0f714ce089c1e3b499f063940d,874
  - representable-functors-3.2.0.2@sha256:f15e598ca712171408d919803a48dcf786c94e9596a65336a3d66d0886ca60c5,1877
  - representable-profunctors-3.2@sha256:d7d902ab21de5bcf9ceeb1b13529aa835a818dad00e75da999241508f89f85c2,786

Сбой:

E:\work-category-theory\quick-sort>stack build
Stack has not been tested with GHC versions above 8.6, and using 8.8.3, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for representable-functors-3.2.0.2:
    comonad-5.0.6 from stack configuration does not match >=3 && <4  (latest matching version is 3.1)
    comonad-transformers-4.0 from stack configuration does not match >=3 && <4  (latest matching version is 3.1)
    comonads-fd-4.0 from stack configuration does not match >=3 && <4  (latest matching version is 3.0.3)
    containers-0.6.2.1 from stack configuration does not match >=0.3 && <0.6  (latest matching version is 0.5.11.0)
    contravariant-1.5.2 from stack configuration does not match >=0.4.1 && <1  (latest matching version is 0.6.1.1)
    free-5.1.3 from stack configuration does not match >=3 && <4  (latest matching version is 3.4.2)
    mtl-2.2.2 from stack configuration does not match >=2.0.1.0 && <2.2  (latest matching version is 2.1.3.1)
    semigroupoids-5.3.4 from stack configuration does not match >=3 && <4  (latest matching version is 3.1)
    transformers-0.5.6.2 from stack configuration does not match >=0.2 && <0.4  (latest matching version is 0.3.0.0)
needed due to quick-sort-0.1.0.0 -> representable-functors-3.2.0.2

Some different approaches to resolving this:

  * Set 'allow-newer: true' in C:\sr\config.yaml to ignore all version constraints and build anyway.

  * Recommended action: try adding the following to your extra-deps in E:\work-category-theory\quick-sort\stack.yaml:

- comonad-3.1@sha256:95ab6440e380de06c6167f52a29903bee3e06295bb15598687305755eb1febd9,1635
- comonad-transformers-3.1@sha256:6641d4d5466a1e5e5b3863654d1df224c0980c332cf648b17ff148312bcf3f3b,1372
- comonads-fd-3.0.3@sha256:7fd04f220367fe8c0cd2b8c35ca15bc77a7d93a3d45f276435a094f9bdb44a60,1376
- containers-0.5.11.0@sha256:28ad7337057442f75bc689315ab4ec7bdf5e6b2c39668f306672cecd82c02798,16685
- contravariant-0.6.1.1@sha256:715c882354db424ed8b79518dab90e103a30a0ac64229f6cc86f0b3bb036c5dc,1493
- free-3.4.2@sha256:ddb52e32cb0e219e7d46b7021c7d1ec54797df878fd1b1ede0732bcacafdd9f0,2262
- mtl-2.1.3.1@sha256:a4283d5070cef5061aa8888c88baf50cd2db1904b254701321a93cf6c0835a11,1618
- semigroupoids-3.1@sha256:66c4375dabc33cff413ab5c1bc73c313fd2768ae21504b1cd1ac9aa8705529dd,3550
- transformers-0.3.0.0@sha256:4ec3dd53be60415dad46e00ec6c7f78bdc37dcda1670cf5abe5c480719b78b60,2318

Plan construction failed.

ОК, я продолжаю добавлять ..

  - category-extras-1.0.2@sha256:511a5668e05af6617d94080e866c9a496e0abd7625d961264755614a73b517f1,10259
  - categories-1.0.7@sha256:e707f8ac06eac755cb508aa67de64ab2e33ce1c54aebb6f43f64c615aa5234f6,1636
  - comonad-extras-4.0.1@sha256:60c93aa274239086d96d162c3c8bf7cde33a3e8470ecb56461b2f77d2625521e,1321
  - comonad-transformers-4.0@sha256:cdc81f6837836ec4b120ced8503b54a7f1e230e08971cc01717dcd16ba1ceb28,831
  - comonads-fd-4.0@sha256:92ed08f50f64aa9ce57214c9f0539e0244225ef4c934065dff819a751b89eeaf,817
  - groupoids-4.0@sha256:7d26a2cc5e557773b565f2433b898d7472404a03bafde51fec5f4a7c7936812e,836
  - indexed-extras-0.2@sha256:e7e498023e33016fe45467dfee3c1379862e7e6654a806a965958fa1adc00304,1349
  - profunctor-extras-4.0@sha256:b436587378964546df3063dad44504fd698cce0f714ce089c1e3b499f063940d,874
  - representable-functors-3.2.0.2@sha256:f15e598ca712171408d919803a48dcf786c94e9596a65336a3d66d0886ca60c5,1877
  - representable-profunctors-3.2@sha256:d7d902ab21de5bcf9ceeb1b13529aa835a818dad00e75da999241508f89f85c2,786
  - comonad-3.1@sha256:95ab6440e380de06c6167f52a29903bee3e06295bb15598687305755eb1febd9,1635
  - comonad-transformers-3.1@sha256:6641d4d5466a1e5e5b3863654d1df224c0980c332cf648b17ff148312bcf3f3b,1372
  - comonads-fd-3.0.3@sha256:7fd04f220367fe8c0cd2b8c35ca15bc77a7d93a3d45f276435a094f9bdb44a60,1376
  - containers-0.5.11.0@sha256:28ad7337057442f75bc689315ab4ec7bdf5e6b2c39668f306672cecd82c02798,16685
  - contravariant-0.6.1.1@sha256:715c882354db424ed8b79518dab90e103a30a0ac64229f6cc86f0b3bb036c5dc,1493
  - free-3.4.2@sha256:ddb52e32cb0e219e7d46b7021c7d1ec54797df878fd1b1ede0732bcacafdd9f0,2262
  - mtl-2.1.3.1@sha256:a4283d5070cef5061aa8888c88baf50cd2db1904b254701321a93cf6c0835a11,1618
  - semigroupoids-3.1@sha256:66c4375dabc33cff413ab5c1bc73c313fd2768ae21504b1cd1ac9aa8705529dd,3550
  - transformers-0.3.0.0@sha256:4ec3dd53be60415dad46e00ec6c7f78bdc37dcda1670cf5abe5c480719b78b60,2318

Теперь произошла новая ошибка:

E:\work-category-theory\quick-sort>stack build
The same package name is used in multiple local packages

comonad-transformers used in:
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "comonad-transformers", pkgVersion = mkVersion [3,1]
}) 6641d4d5466a1e5e5b3863654d1df224c0980c332cf648b17ff148312bcf3f3b,1372 (TreeKey ced3d6e9e6804e43646e6f8b23c8354808074a
403efeadc3e9befd628a78ea46,1116))
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "comonad-transformers", pkgVersion = mkVersion [4,0]
}) cdc81f6837836ec4b120ced8503b54a7f1e230e08971cc01717dcd16ba1ceb28,831 (TreeKey 1319b9d5039d6252803e684d0e42431867b20c9
03b49ddb6d5910b2b8eeb02e7,414))

comonads-fd used in:
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "comonads-fd", pkgVersion = mkVersion [3,0,3]}) 7fd0
4f220367fe8c0cd2b8c35ca15bc77a7d93a3d45f276435a094f9bdb44a60,1376 (TreeKey 7714b845bc4ba432b5b48054a45ba606ce72c7bfa2242
d3faed5387f8786e5b5,709))
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "comonads-fd", pkgVersion = mkVersion [4,0]}) 92ed08
f50f64aa9ce57214c9f0539e0244225ef4c934065dff819a751b89eeaf,817 (TreeKey 275c7b8e4336d289ef0f280260ac9da408f1b41bd2a49b1c
55699bfbf96c9c82,463))

Кажется, что есть несколько дублирующих пакетов (comonad-transformers и comonads-fd)?

Удаляю младшую версию и перестройте ее:

E:\work-category-theory\quick-sort>stack build
Stack has not been tested with GHC versions above 8.6, and using 8.8.3, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for cabal-doctest-1.0.8:
    Cabal must match >=1.10 && <3.3, but the stack configuration has no specified version  (latest matching version
          is 3.2.0.0)
needed due to quick-sort-0.1.0.0 -> cabal-doctest-1.0.8

In the dependencies for distributive-0.6.2:
    Cabal needed, but the stack configuration has no specified version  (latest matching version is 3.2.0.0)
needed due to quick-sort-0.1.0.0 -> distributive-0.6.2

In the dependencies for hashable-1.3.0.0:
    text must match >=0.12 && <1.3, but the stack configuration has no specified version  (latest matching version
         is 1.2.4.0)
needed due to quick-sort-0.1.0.0 -> hashable-1.3.0.0

In the dependencies for reducers-3.12.3:
    text must match >=0.11.1.5 && <1.3, but the stack configuration has no specified version  (latest matching version
         is 1.2.4.0)
needed due to quick-sort-0.1.0.0 -> reducers-3.12.3

In the dependencies for transformers-0.3.0.0:
    base-4.13.0.0 from stack configuration does not match >=2 && <4.8  (latest matching version is 4.7.0.2)
needed due to quick-sort-0.1.0.0 -> transformers-0.3.0.0

Some different approaches to resolving this:

  * Build requires unattainable version of base. Since base is a part of GHC, you most likely need to use a different
    GHC version with the matching base.

Plan construction failed.

Теперь я полностью запутался ...

Почему стек не может автоматически разрешать зависимости пакетов?

Может кто-нибудь помочь меня?

Очень спасибо!

1 Ответ

2 голосов
/ 20 апреля 2020

Цитирование комментария:

Да, это новый проект (небольшая программа). Я просто использую алгебру, коалгебру и хайло для быстрой сортировки. Я могу написать конструктор типа и функции самостоятельно. Для DRY я нашел эти пакеты от hackage ...

Если вам нужен пакет исключительно для этого, просто переключитесь на recursion-schemes, как предлагает Джозеф Сибл, и позаботьтесь о нем. Себя беда. Тем не менее, не мешало бы сказать пару слов о трудностях установки, которые вы отметили.


category-extras - это очень большая и очень старая библиотека, которая долгое время была go, разделить на множество других библиотек. В идеале вы должны просто установить некоторые или все заменяющие библиотеки и полностью забыть о category-extras. К сожалению, Control.Functor.Algebra не получил официальной замены, согласно списку замен из версии 1.02 документов (в случае Control.Morphism.Hylo, по крайней мере, некоторые функции могут быть получено с recursion-schemes). Это означает, что вы все еще можете использовать category-extras.

В любом случае, единственное, что вам определенно не нужно, - это установка category-extras-1.0.2, самой последней версии. Это просто метапакет, который не предоставляет своего собственного кода, а просто извлекает большое количество пакетов для замены. Кроме того, поскольку эта версия была выпущена в 2012 году, многие из этих сменных пакетов сами были заменены на этом этапе.

Если вам действительно нужно использовать category-extras, ваша лучшая ставка может быть установлена ​​на category-extras-0.53.5.1 (я ссылаюсь на 0.53.5, потому что документы 0.53.5.1 не отображаются должным образом в Hackage), последняя версия перед разделением. Это зависит от mtl < 2, что раздражает, потому что это чрезвычайно старая версия пакета, которая используется практически везде. Кроме того, mtl-1.1.1 имеет верхнюю границу base < 4.6. Это означает, что требуется GH C 7.4.2 или старше, и поэтому установка его со стеком не будет работать . ghcup тоже не поможет (самый ранний GH C, который он поддерживает - 7.10.3), поэтому вам придется выполнить автономную установку GH C 7.4.2, либо на виртуальной машине, либо используя другую стратегию, чтобы отделить ее от обычной версии GH C.

...