От каких версий пакетов может зависеть мой пакет на Haskell? - PullRequest
7 голосов
/ 16 мая 2010

Я почти готов загрузить свой первый пакет в Hackage!

У меня есть это в моем hstest.cabal:

Executable hstest
        Main-Is:        hstest.hs
        Build-Depends:  base, mtl, directory, ghc, ghc-paths, random, QuickCheck

Я понимаю, что просто перечислять пакеты, от которых зависит мой пакет, плохо; вместо этого я должен указать, какие версии этих пакетов нужны.

Установленные мной версии

  • база = 4.1.0.0
  • мтл = 1.1.0.2
  • directory = 1.0.0.3
  • ghc = 6.10.3
  • ghc-paths = 0.1.0.5
  • случайный = 1.0.0.1
  • QuickCheck = 1.2.0.0

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

От каких будущих версий этих пакетов я могу предположить, что мой пакет может зависеть?

1 Ответ

5 голосов
/ 16 мая 2010

Есть ли простой способ узнать, какие на самом деле самые ранние приемлемые версии каждого из этих пакетов нужны моему пакету

Нет, для этого нет инструмента.

От каких будущих версий этих пакетов я могу предположить, что мой пакет может зависеть?

Самый безопасный способ - следовать политике версий пакетов , которая говорит, что полагаться только на версии пакетов, расширяющие API. Это варианты формы: A.B.*. Как говорится в политике:

Чтобы свести к минимуму поломки при выпуске новых версий пакетов, вы можете использовать зависимости, которые не чувствительны к незначительным изменениям версий (например, foo> = 1.2.1 && <1.3). </p>

Итак, вы бы сделали что-то вроде:

 QuickCheck >= 1.2 && < 1.3

Теперь тестирование может выявить нижнюю или верхнюю границу того, какие функции вы фактически используете.

...