attoparsec非法的等式约束

时间:2014-06-09 07:03:45

标签: haskell types type-conversion type-constraints attoparsec

截至撰写本文时,我正在运行最新的GHC(7.9.20140608)和cabal(1.20.0.0),似乎attoparsec失败了。

Data/Attoparsec/ByteString/Internal.hs:519:7:
    Illegal equational constraint a_audv ~ (ByteString, t)
    (Use GADTs or TypeFamilies to permit this)
    In the context: (a_audv ~ (ByteString, t))
    While checking the inferred type for ‘succ'’
    In the expression:
      let
        succ' t' pos' more' a
          = succ t' pos' more' (substring pos (pos' - pos) t', a)
      in runParser p t pos more lose succ'
    In the second argument of ‘($)’, namely
      ‘\ t pos more lose succ
         -> let succ' t' pos' more' a = ...
            in runParser p t pos more lose succ'’

我错过了任何语言扩展吗?或者这个问题会更棘手吗?这是我的cabal文件:http://lpaste.net/105329

任何帮助都会令人难以置信:)快乐黑客!

1 个答案:

答案 0 :(得分:2)

目前,使用ghc-7.8的最佳方法(如果您的发行包管理器不包含它)是转到ghc download page并按照current stable release的说明进行操作。有二进制包,或者你可以从源代码安装(使用源代码压缩包,这可以像./configure && make && make install一样简单,但你需要有一个工作的ghc)。

如果您从源代码安装,可以考虑更改版本,例如到7.8.2.1。您可以通过修改AC_INIT中的configure.ac行,然后在autoreconf之前执行configure来执行此操作。如果您这样做,并且还安装到特定于版本的位置(例如/usr/local/ghc/ghc-7.8.2.1.src,可以通过./configure --PREFIX=/path/to/install设置),您将能够同时安装本地编译版本打包安装(或平台,或任何其他版本)。

请注意,ghc-7.8.3很快就会到期(最多可能在两周内);这是一个错误修复版本。目前还没有包含ghc-7.8的Haskell平台版本,因此目前不是一个选项。