Я довольно новичок в стеке 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
, чем та, которая указана в требованиях зависимости?