问题 如何升级Haskell平台


我在Windows上安装了Haskell Platform 2012.4。我想在GHC 7.6.2中尝试新的扩展。看起来GHC 7.6.2 x86_64下载不包含安装程序,只是二进制文件。安装最新版本并将其设置为构建Haskell项目的默认设置的正确方法是什么?谢谢。


8151
2018-02-18 21:13


起源



答案:


如果您下载GHC本身,您只需获得GHC和少量库。如果您下载Haskell平台,您将获得GHC以及更大的库集合。但是,Haskell平台不经常更新,因此您将获得较旧版本的GHC。

如果你问“我如何安装Haskell平台,然后让它与更新的GHC一起工作?”,那么答案是“你没有”。必须针对您正在使用的特定版本的GHC编译Haskell库。

你基本上有两个选择:

  1. 使用Haskell平台及其提供的GHC版本。
  2. 使用最新的GHC,并手动编译您想要的任何库。

在Linux上它并不是太糟糕,但是绑定到外部C代码的Haskell库往往很难在Windows上构建。 (像OpenGL,zlib等等)包含100%vanilla Haskell代码的软件包很容易在任何系统上编译。


9
2018-02-18 21:44



我知道需要使用每个版本的GHC构建库。我只是想用“runhaskell”来指定用于构建的版本。我下载了7.6.2,它只是一个可执行文件,库等文件夹。接下来是什么?我如何在两个选项之间进行选择?谢谢。 - MFlamer
嗯,这很有趣。他们曾经为Windows提供MSI安装程序。我想现在Haskell平台已经出现了,他们不再烦了。我的猜测是你需要编辑 PATH 变量因此首先列出新的GHC。 - MathematicalOrchid


答案:


如果您下载GHC本身,您只需获得GHC和少量库。如果您下载Haskell平台,您将获得GHC以及更大的库集合。但是,Haskell平台不经常更新,因此您将获得较旧版本的GHC。

如果你问“我如何安装Haskell平台,然后让它与更新的GHC一起工作?”,那么答案是“你没有”。必须针对您正在使用的特定版本的GHC编译Haskell库。

你基本上有两个选择:

  1. 使用Haskell平台及其提供的GHC版本。
  2. 使用最新的GHC,并手动编译您想要的任何库。

在Linux上它并不是太糟糕,但是绑定到外部C代码的Haskell库往往很难在Windows上构建。 (像OpenGL,zlib等等)包含100%vanilla Haskell代码的软件包很容易在任何系统上编译。


9
2018-02-18 21:44



我知道需要使用每个版本的GHC构建库。我只是想用“runhaskell”来指定用于构建的版本。我下载了7.6.2,它只是一个可执行文件,库等文件夹。接下来是什么?我如何在两个选项之间进行选择?谢谢。 - MFlamer
嗯,这很有趣。他们曾经为Windows提供MSI安装程序。我想现在Haskell平台已经出现了,他们不再烦了。我的猜测是你需要编辑 PATH 变量因此首先列出新的GHC。 - MathematicalOrchid


我没有这样做,我在工作,所以我无法测试,但看着 GHC文件 我想你可以使用 --with-compiler=path 标志,以选择使用哪个版本的GHC?

也可以看看 这个问题,与使用安装了多个版本的ghc的cabal有关。我猜你可能想要使用cabal-dev或其他东西来沙箱,否则你的包数据库可能会变得一团糟。

编辑:就默认情况而言,我认为你可以在cabal配置文件中设置它。在我链接的问题中查看对已接受答案的评论。


3
2018-02-18 22:20



谢谢,越来越近了。现在cabal正在使用GHC-7.6.2但我在尝试安装库时遇到这样的错误.....................注册nats-0.1 ... cabal:权限被拒绝cabal:错误:某些软件包无法安装:nats-0.1在最终安装步骤中失败。例外情况是:ExitFailure 1。这是因为这些包不是用这个新的ghc版本构建的,还是我设置错了? - MFlamer
我不确定权限被拒绝的是什么。看看那个nats包,似乎应该用最新的GHC构建。你有没有在运行cabal之前运行cabal更新?我会说实话,这对我来说也是一个陌生的领域,所以祝你好运,并确保用有效的方式更新我们。我知道人们总是在谈论在Windows上运行起来有多难,你可能是这里的先驱:) - tredontho