了解Haskell的堆栈程序以及解析器和LTS版本

Ana*_*Ana 23 haskell haskell-stack

我想了解如何使用stack和stackage.org.当我第一次安装并使用它时,stackage.org是在LTS-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
Run Code Online (Sandbox Code Playgroud)

这是否意味着该项目已设置为仅使用在LTS-3.8下验证的软件包和版本?

如果我现在想要启动一个新项目并希望在新项目中使用最新的LTS版本,我如何告诉堆栈默认执行此操作?

如果我想"升级"旧项目以使用新的LTS版本呢?

dup*_*ode 23

这是否意味着该项目已设置为仅使用在LTS-3.8下验证的软件包和版本?

究竟.(如果您需要未包含在LTS 3.8集中的软件包,您可以通过.dack extra-deps部分指定它们stack.yaml.将从Hackage中获取它们并为您的项目单独安装它们,而不会影响LTS快照或其他项目.)

如果我现在想要启动一个新项目并希望在新项目中使用最新的LTS版本,我如何告诉堆栈默认执行此操作?

使用例如stack new projectname --resolver=lts-3.11为新项目设置解析器.堆栈默认为您已经使用的最新LTS快照,因此一旦您拥有最新LTS的项目,未来的新项目将会效仿.

如果我想"升级"旧项目以使用新的LTS版本呢?

更改文件中的resolver字段stack.yaml.更改将在下次构建项目时生效.