我试图为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
所以我安装了GHC 8.0.2。我知道如果我改变全局配置文件,我可以解决问题,指示正确的编译器,我想要的,但什么是正确的命令,使这样的变化,避免编辑配置文件?
我试过:
stack config set --compiler ghc-8.0.2
没有成功。我的编译器仍然是8.6.4。
~/.stack$ stack ghc -- --version
The Glorious Glasgow Haskell Compilation System, version 8.6.4
谢谢大家!
2条答案
按热度按时间m1m5dgzv1#
你误解了
stack config
命令。无论你在哪里使用--compiler
,你都在告诉Stack它应该为当前命令使用哪个编译器版本-但是由于编辑配置并不使用任何类型的编译器,这并没有真正改变任何东西。只需运行
stack config set
即可获得如果你寻求帮助,Stack会告诉你唯一有效的
COMMAND
值是resolver
、system-ghc
和install-ghc
。因此,您可以将
resolver
设置为特定的编译器版本,使用但是您不能从命令行设置编译器,因为
stack config set
不支持该命令。2exbekwf2#
我尝试了上面的方法,但是运行
ghci
失败。错误信息如下所示:这是另一种方法。
如果你的ghc版本是9.2.7,那么它对应的LTS版本是20.18。所以你可以把文件
/root/.stack/global-project/stack.yaml
改为:注意:不同的ghc版本对应不同的LTS版本,所以如果您使用的不是ghc-9.2.7,那么您的LTS版本肯定不是20.18。