作为uni赋值,我需要使用某些功能增强给定的Haskell框架。由于此框架使用了Gloss库,因此我使用cabal install gloss
安装了Gloss。这给了我没有错误,但是,当尝试配置框架的安装文件(runghc Setup configure
)时,我收到以下错误消息:
Configuring lambda-wars-0.1.0.0...
Setup: Encountered missing dependencies:
gloss >=1.8 && <1.10, random ==1.0.*, time >=1.4 && <1.6
尝试安装这些依赖项(例如cabal install 'gloss >=1.8 && <1.10
)会给我提供其他错误消息:
Resolving dependencies...
cabal: Could not resolve dependencies:
next goal: gloss (user goal)
rejecting: gloss-1.10.2.3/installed-3mE..., gloss-1.10.2.3, gloss-1.10.2.2,
gloss-1.10.2.1, gloss-1.10.1.1 (constraint from user target requires >=1.8 &&
<1.10)
trying: gloss-1.9.4.1
next goal: base (dependency of gloss-1.9.4.1)
rejecting: base-4.9.0.0/installed-4.9... (conflict: gloss => base==4.8.*)
rejecting: base-4.9.0.0, base-4.8.2.0, base-4.8.1.0, base-4.8.0.0,
base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1, base-4.6.0.0,
base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0, base-4.3.1.0,
base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0, base-4.1.0.0,
base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (constraint from non-upgradeable
package requires installed instance)
Dependency tree exhaustively searched.
经过一番研究,我认为这意味着我的GHC与项目所需的版本不同。但是,我似乎无法弄清楚如何真正解决这个问题!
我在Mac OS X 10.10.5版上工作。
答案 0 :(得分:1)
我会首先尝试在Cabal沙箱中安装它:
$ cabal sandbox init
$ cabal install LambdaWars
但是在这里看起来你有一个base
包的版本与它不兼容。您是否使用base-4.8
尝试了较旧的GHC 7.8编译器?
答案 1 :(得分:1)
stack.yaml
resolver: lts-7.4 # for ghc 8.0.1 #resolver: lts-6.22 # for ghc 7.10.3 packages: - '.' extra-deps: - AC-Angle-1.0 - AC-Vector-Fancy-2.4.0 flags: {} extra-package-dbs: []
此外,您需要修改src/Engines.hs
在文件顶部添加{-# LANGUAGE CPP -#}
,删除第26行中的import Data.Label.Pure
。将另一个import Data.Label.Pure
更改为以下
#if MIN_VERSION_fclabels(2,0,0)
import Data.Label
#else
import Data.Label.Pure
#endif
我无法测试这个因为过剩而无法工作 - 但它用ghc-8.0.1编译,我会在pull request
提交git repo建立你需要运行的lambdawars
> stack build
> stack exec -- LambdaWars
注意:在Linux上,您需要sudo apt-get install freeglut3-dev
之类的东西才能运行它。