我的计算机上安装了用于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之后,我做错了什么?
路径为/Users/developer/.stack/programs/x86_64-osx/
更新
在路径/Users/developer/.stack/
中,有一个名为global-project
的文件夹,我更改了yaml,如下所示:
现在堆栈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
答案 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)
GHC的版本以及可以安装的软件包由解析程序指定。
因此,要更改在外部堆栈项目中执行stack ghci
时使用的GHC版本,请执行以下操作:
在~/.stack/build-plan
中查找现有的解析程序,例如lts-10.4
,或下载您需要的新解析器;
执行stack config set resolver lts-10.4
。是的,它会更新~/.stack/global-project/stack.yaml
。
因此,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'
)。