在堆栈上更改ghci版本

时间:2017-06-03 16:58:34

标签: haskell haskell-stack

我的计算机上安装了用于haskell的堆栈:

Developers-MacBook-Pro:~ developer$ stack ghci
Configuring GHCi with the following packages:
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /private/var/folders/2x/t_2cl03x2092dkzvc702d7lc0000gn/T/ghci2170/ghci-script
Prelude>  

如您所见,版本仍为8.0.1。然后我升级了堆栈如下:

Developers-MacBook-Pro:~ developer$ stack upgrade
Current Stack version: 1.3.2, available download version: 1.4.0
Newer version detected, downloading
Querying for archive location for platform: osx-x86_64-static
Querying for archive location for platform: osx-x86_64
Downloading from: https://github.com/commercialhaskell/stack/releases/download/v1.4.0/stack-1.4.0-osx-x86_64.tar.gz
Download complete, testing executable
Version 1.4.0, Git revision e714f1dd3fade19496d91bd6a017e435a96a6bcd (4640 commits) x86_64 hpack-0.17.0
New stack executable available at /Users/developer/.local/bin/stack 

在我再次启动stack ghci并且我还有版本8.0.1之后,我做错了什么?

图像显示,ghci版本8.0.2已成功安装:
enter image description here

路径为/Users/developer/.stack/programs/x86_64-osx/

更新 在路径/Users/developer/.stack/中,有一个名为global-project的文件夹,我更改了yaml,如下所示:

enter image description here

现在堆栈ghci在版本8.0.2上运行:

Developers-MBP:~ developer$ stack ghci
Configuring GHCi with the following packages:
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /private/var/folders/2x/t_2cl03x2092dkzvc702d7lc0000gn/T/ghci526/ghci-script

2 个答案:

答案 0 :(得分:3)

stack是一个构建工具,它使用不同版本的GHC和依赖关系来协调构建项目。因此,您可以独立于ghc升级stack

我不太确定stack ghci在项目目录之外运行时的预期行为。据推测,您可以在ghc中配置默认​​版本~/.stack/config.yaml以用于此类情况。请参阅:http://docs.haskellstack.org/en/stable/yaml_configuration/

您还应该能够:

$ stack ghci --with-ghc ghc-7.10.3

但通常ghc的版本取决于您为项目配置的堆叠快照,例如,如果您有stack.yaml

resolver: lts-3.3

......你将使用ghc-7.10.3

答案 1 :(得分:3)

根据https://docs.haskellstack.org/en/stable/faq/#what-version-of-ghc-is-used-when-i-run-something-like-stack-ghci

  

GHC的版本以及可以安装的软件包由解析程序指定。

因此,要更改在外部堆栈项目中执行stack ghci 时使用的GHC版本,请执行以下操作:

  1. ~/.stack/build-plan中查找现有的解析程序,例如lts-10.4,或下载您需要的新解析器;

  2. 执行stack config set resolver lts-10.4。是的,它会更新~/.stack/global-project/stack.yaml

  3. 因此,stack ghci外部堆栈项目将使用GHC 8.2.2,这是解析器lts-10.4指定的GHC版本(此关系可在https://www.stackage.org/lts-10.4或文件中找到~/.stack/build-plan/lts-10.4.yaml表示ghc-version: '8.2.2')。