我正在尝试按instructions来安装Quipper
所需的Haskell组件;但是,从全新安装的Haskell using the binary installer开始工作。
我在列表中尝试安装Lattices
包:
cabal update
cabal install random
cabal install mtl
cabal install primes
cabal install Lattices
但是我遇到了以下错误:
格子-0.0.1在构建阶段失败。例外是:ExitFailure 1
如果我尝试继续Quipper install instructions:
cabal install zlib
cabal install easyrender
我遇到了更多错误:
cabal:无法解决依赖关系:
我不知道该怎么办。如何为Quipper完成软件包安装instructions?
Resolving dependencies...
Configuring Lattices-0.0.1...
Building Lattices-0.0.1...
Failed to install Lattices-0.0.1
Build log ( /Users/Roy/.cabal/logs/Lattices-0.0.1.log ):
Configuring Lattices-0.0.1...
Building Lattices-0.0.1...
Preprocessing library Lattices-0.0.1...
[1 of 2] Compiling Math.LinearAlgebra.GramSchmidt ( src/Math/LinearAlgebra/GramSchmidt.hs, dist/build/Math/LinearAlgebra/GramSchmidt.o )
src/Math/LinearAlgebra/GramSchmidt.hs:25:26:
Ambiguous occurrence ‘*>’
It could refer to either ‘Prelude.*>’,
imported from ‘Prelude’ at src/Math/LinearAlgebra/GramSchmidt.hs:2:8-37
(and originally defined in ‘GHC.Base’)
or ‘Math.Algebra.LinearAlgebra.*>’,
imported from ‘Math.Algebra.LinearAlgebra’ at src/Math/LinearAlgebra/GramSchmidt.hs:7:1-43
cabal: Error: some packages failed to install:
Lattices-0.0.1 failed during the building phase. The exception was:
ExitFailure 1
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: easyrender-0.1.0.1 (user goal)
next goal: base (dependency of easyrender-0.1.0.1)
rejecting: base-4.8.1.0/installed-075... (conflict: easyrender => base>=4.6 &&
<4.8)
rejecting: base-4.8.1.0, 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.
OS X 10.10.4; Xcode 6.4; CLT:6.4.0.0.1.1435007323; Clang:6.1 build 602; Haskell GHC:7.10.2。一般使用Homebrew,但是,看似Homebrew's recommendation,而不是Haskell。
答案 0 :(得分:3)
我实际上并没有意识到任何人都在使用Hackage中的Lattice-0.0.1,所以当有人在上个月报告我这个错误时,我确实在GitHub上修复了它,但是没有立即发布新版本,因为这看起来并不紧急。似乎我错了: - )
我已将新版本上传到Hackage,Lattices-0.0.2,应修复此问题。
答案 1 :(得分:1)
Lattices-0.0.1
的来源与base
或更高版本中包含的GHC 7.10.1
或更高版本(<$>)
的新版本不兼容,后者现在包含Applicative Functor运算符(<*>)
,{{1} },(*>)
&amp; 1}}默认情况下。
在先前版本的(<*)
中,需要明确导入Applicative Functor运算符:
base
在import Control.Applicative ((<$>), (<*>), (*>), (<*))
main = show <$> getArgs -- use the applicative operator(s)
或更高版本中包含的base
的最新版本中,这些运算符隐式包含在Prelude模块中。
GHC 7.10.1
由于-- This is not necessary
-- import Control.Applicative ((<$>), (<*>), (*>), (<*))
main = show <$> getArgs -- use the applicative operator(s)
软件包是很久以前创建的,因此它的源代码与最新版本的Lattices-0.0.1
&amp;您通过GHC
安装的base
。如果您look at the source,您可以看到数学包导入中使用了haskell-platform
运算符。但是,鉴于Applicative Functor模块中隐含的前导导入*>
,现在存在一个命名歧义,这在早期版本的*>
中并不存在。这会导致编译错误。
要正确编译base
包,您需要使用早于Lattice-0.0.1
的GHC版本。
GHC 7.10.1
维护良好,遗憾的是 haskell-platform
包不是......