Могу ли я как-то использовать пакет с более поздней версией базы, чем указано в пакете? - PullRequest
0 голосов
/ 14 января 2019

Я довольно новичок в стеке Haskell, поэтому, возможно, я неправильно понимаю, как все должно работать здесь, но у меня есть проблема, которую я видел несколько раз, и мне интересно, если я поступаю неправильно способ.

Короче говоря, я иногда хочу использовать пакет со спецификацией версии, которая ограничена более низкой версией base, чем то, что входит в мой преобразователь стека.

Например, я не могу использовать распознаватель lts-12.14 с PSQueue-1.1, потому что первый включает base-4.11.1, а второй требует base >=4 && <4.11.

Два пути, которые я нашел для решения, были либо к

  • добавить конкретную версию base к моему extra-deps, убедившись, что закрепленная версия находится в пределах диапазона, который позволяет мой пакет; или
  • выберите другой распознаватель (например, https://www.stackage.org/diff/, чтобы определить, какой из них является самым последним преобразователем с достаточно ранней версией base)

Оба из них кажутся неоптимальными, особенно если учесть, что я мог бы использовать пакеты с неперекрывающимися диапазонами (например, один >=3 && <4.11 и один >=4.11). Я понимаю, что использование такой комбинации вместе может потерпеть неудачу, особенно если они заблокированы на разных основных версиях base (при условии, что base использует semver), но пока я пишу только довольно мало программы, так что если они кажутся работающими, я вполне счастлив, даже если есть другие, неиспользованные пути кода, которые потерпят неудачу в конкретной комбинации пакетов и версий. Другими словами: я знаю риск - но я не могу рискнуть, потому что я не знаю, как это сделать.

Есть ли способ заставить стек использовать более новую версию base, чем та, которая указана в требованиях зависимости?

1 Ответ

0 голосов
/ 14 января 2019

Я думаю, что вы ищете allow-newer - https://docs.haskellstack.org/en/stable/yaml_configuration/#allow-newer

Игнорировать границы версий в файлах .cabal. По умолчанию установлено значение false.

...