gpt4 book ai didi

haskell:在 ghc 之间切换(对于不同的基础)有哪些好方法?

转载 作者:行者123 更新时间:2023-12-04 13:31:36 25 4
gpt4 key购买 nike

我是 Haskell 的初学者,所以我只是想知道有哪些好方法可以在不同版本的 ghc 之间切换,以便我们仍然可以 cabal install when the dependency of some Hackage requires an older version of base ,而不是像这样彻底搜索到依赖关系树:

Resolving dependencies...
cabal: Could not resolve dependencies:
trying: bnfc-system-tests-0.1.0.0 (user goal)
next goal: base (dependency of bnfc-system-tests-0.1.0.0)
rejecting: base-4.8.0.0/installed-901... (conflict: bnfc-system-tests =>
base>=4.5 && <4.8)
rejecting: base-4.8.0.0, 4.7.0.2, 4.7.0.1, 4.7.0.0, 4.6.0.1, 4.6.0.0, 4.5.1.0,
4.5.0.0, 4.4.1.0, 4.4.0.0, 4.3.1.0, 4.3.0.0, 4.2.0.2, 4.2.0.1, 4.2.0.0,
4.1.0.0, 4.0.0.0, 3.0.3.2, 3.0.3.1 (global constraint requires installed
instance)
Dependency tree exhaustively searched.

我正在使用 mac,并使用 brew ( brew install ghc & cabal-install ) 安装了我的 haskell 平台(使用 ghc-7.10.1.1)。于是我去抢了一个老版本的haskell平台 here ,在我的 .zshenv 中添加了旧版本 ghc 的别名
ghc-78 --version
The Glorious Glasgow Haskell Compilation System, version 7.8.4

并在 ~/.cabal 中创建了一个新的配置文件和
-- compiler: ghc-78

但在那之后当我跑
cabal --config-file="./config78" install --only-dependencies --enable-tests

在沙箱目录中,我仍然遇到依赖问题,表明我仍在使用 ghc 7.10。 (所以在那之后我把这行改回编译器:ghc 并添加了 ghc-location:
-- ghc-location: the/new/directory/ghc 

在程序位置下,我仍然得到同样的东西。)

我做错了什么以及在不同版本的 ghc 之间切换的好方法是什么? (例如在 Node.js 中我可以使用 n,一个版本控制管理器)

- 更新:

即使在我取消注释该行之后
compiler: ghc-78
cabal --config-file="./config78" install --only-dependencies --enable-tests仍然会给我依赖错误(即使我使用 --sandbox-config-file 代替)。 cabal sandbox hc-pkg list base即使我使用配置文件初始化沙箱,也会显示 base-4.8.0.0:
cabal --config-file="./config78" sandbox init

然而,
cabal install -w ghc-7.8.4

只要 ghc-7.8.4 在路径中就可以工作,如 suggested by Daniel in the comment .

最佳答案

我建议使用 stack为了这:

  • 下载:https://github.com/commercialhaskell/stack/wiki/Downloads
  • 深度指南:https://www.fpcomplete.com/blog/2015/08/new-in-depth-guide-stack
  • Reddit 上的深入指南帖子:https://www.reddit.com/r/haskell/comments/3j6ria/new_indepth_guide_to_stack/

  • 通过选择解析器,您也选择了 GHC 版本,因此您的代码将使用 Stackage 使用的相同 GHC 构建。使用解析器,如 lts-2.17对于 GHC 7.8.4 或 lts-3.3对于 GHC 7.10.2 等。

    另外,我建议使用:
    system-ghc: false

    在您的 stack.yaml文件以便 stack总是使用自己的工具链。

    关于haskell:在 ghc 之间切换(对于不同的基础)有哪些好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338883/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com