无法为Haskell

时间:2015-08-14 16:00:41

标签: haskell installation packaging cabal haskell-platform

我正在尝试按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。

2 个答案:

答案 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;

在先前版本的(<*)中,需要明确导入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 包不是......