Подтвердить что ты не робот

Понимание программы стека Haskell и версии resolver и LTS

Я пытаюсь понять, как использовать стек и stackage.org. Когда я впервые установил его и использовал его, stackage.org был на LTS-3.8 ( "resolver" ). С тех пор у stackage.org теперь есть LTS-3.11.

Во-первых, я хотел бы подтвердить, что это значит. Stackage - это хранилище пакетов, в которых для конкретной версии LTS (скажем, 3.8) пакеты были проверены для совместной работы. Поэтому пакеты LTS-3.8 работают вместе, а пакеты LTS-3.11 также работают вместе. Двигаемся дальше...

Когда я запускаю stack new projectname, стек говорит мне:

Checking against build plan lts-3.8
Selected resolver: lts-3.8

Означает ли это, что проект был настроен для использования только пакетов и версий, проверенных в LTS-3.8?

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

Как насчет того, хочу ли я "обновить" старый проект, чтобы использовать новую версию LTS?

4b9b3361

Ответ 1

Означает ли это, что проект был настроен для использования только пакетов и версий, проверенных в LTS-3.8?

Совершенно верно. (И если вам понадобятся пакеты, не включенные в набор LTS 3.8, вы можете указать их через раздел extra-deps stack.yaml. Стек будет захватывать их из Hackage и устанавливать отдельно для вашего проекта, не затрагивая моментальный снимок LTS или ваш другие проекты.)

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

Использовать, например. stack new projectname --resolver=lts-3.11, чтобы установить резольвер для нового проекта. стек по умолчанию к самому последнему снимку LTS, который вы уже используете, и поэтому, как только у вас появится проект с последними новыми проектами LTS, последуйте этому примеру.

Как насчет того, хочу ли я "обновить" старый проект, чтобы использовать новую версию LTS?

Измените поле resolver в файле stack.yaml. Это изменение вступит в силу при следующем запуске проекта.