吖奇说*_*HUō 6 version-control haskell
我是Haskell的初学者所以我只是想知道在ghc的不同版本之间切换的好方法是什么,以便我们仍然可以cabal install
在某些Hackage的依赖需要较旧版本的base时,而不是运行到Dependency树中详尽搜索像这样:
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.
Run Code Online (Sandbox Code Playgroud)
我正在使用mac,我使用brew(brew install ghc & cabal-install
)安装了我的haskell平台(使用ghc-7.10.1.1 ).于是我就抓住哈斯克尔平台的旧版本在这里,添加了对旧版本GHC的别名我.zshenv
ghc-78 --version
The Glorious Glasgow Haskell Compilation System, version 7.8.4
Run Code Online (Sandbox Code Playgroud)
并提出了新的配置文件中~/.cabal
有
-- compiler: ghc-78
Run Code Online (Sandbox Code Playgroud)
但那之后我跑了
cabal --config-file="./config78" install --only-dependencies --enable-tests
Run Code Online (Sandbox Code Playgroud)
在沙盒目录中,我仍然遇到依赖性问题,表明我仍在使用ghc 7.10.(所以在那之后我将线路改回编译器:ghc并添加了ghc-location:
-- ghc-location: the/new/directory/ghc
Run Code Online (Sandbox Code Playgroud)
在程序位置下,我仍然得到同样的东西.)
我做错了什么以及在不同版本的ghc之间切换的好方法是什么?(例如在Node.js中我可以使用n,一个版本控制管理器)
--update:
即使我已经取消注释该行
compiler: ghc-78
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
然而,
cabal install -w ghc-7.8.4
Run Code Online (Sandbox Code Playgroud)
只要ghc-7.8.4在路径中,就像Daniel在评论中所建议的那样工作.
我建议stack
为此使用:
通过选择解析器,您还选择了GHC版本,因此您的代码将使用与Stackage相同的GHC构建。使用类似lts-2.17
GHC 7.8.4或lts-3.3
GHC 7.10.2等的旋转变压器。
另外,我建议使用:
system-ghc: false
Run Code Online (Sandbox Code Playgroud)
在您的stack.yaml
文件中,以便stack
始终使用其自己的工具链。
归档时间: |
|
查看次数: |
769 次 |
最近记录: |