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

Я пытаюсь понять, как использовать стек и stackage.org. Когда я впервые установил его и использовал, stackage.org был на ЛТС-3.8 ("решатель"). С тех пор, 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?

1 ответов


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

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

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

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

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

изменить resolver поле в . Изменения вступят в силу при следующем построении проекта.