如何更改 Stack 上的默认 GHC 编译器版本

use*_*666 7 haskell ghc haskell-stack

我正在尝试为 Haskell 设置环境并安装堆栈。安装后我意识到 GHC 8.6.4 版本不是我需要的版本(8.0.2)。

compiler-exe: /home/manny/.stack/programs/x86_64-linux/ghc-tinfo6- 
8.6.4/bin/ghc
compiler-bin: /home/manny/.stack/programs/x86_64-linux/ghc-tinfo6- 
8.6.4/bin
compiler-tools-bin: /home/manny/.stack/compiler-tools/x86_64-linux- 
tinfo6/ghc-8.6.4/bin
Run Code Online (Sandbox Code Playgroud)

所以我安装了GHC 8.0.2。我知道如果我更改全局配置文件,我可以解决问题,指示我想要的正确编译器,但是进行此类更改以避免编辑配置文件的正确命令是什么?

我试过:

stack config set --compiler ghc-8.0.2
Run Code Online (Sandbox Code Playgroud)

没有成功。我的编译器仍然是8.6.4。

~/.stack$ stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 8.6.4
Run Code Online (Sandbox Code Playgroud)

谢谢你!

Isa*_*kel 8

你误解了这个stack config命令。无论您在哪里使用--compiler,您都是在告诉 Stack 当前命令应该使用哪个编译器版本 - 但由于编辑配置不使用任何类型的编译器,因此这并没有真正改变任何内容。

只要跑步stack config set就能给你

Missing: COMMAND

Usage: stack config set COMMAND [--help]
  Sets a field in the project's stack.yaml to value
Run Code Online (Sandbox Code Playgroud)

这更好地解释了问题。如果您寻求帮助,Stack 会告诉您唯一有效的COMMAND值是resolversystem-ghcinstall-ghc

因此您可以将其设置resolver为特定的编译器版本,

stack config set resolver ghc-8.0.2
Run Code Online (Sandbox Code Playgroud)

但是您无法从命令行设置编译器,因为它不是stack config set.