【问题标题】:attoparsec Illegal equational constraintattoparsec 非法方程约束
【发布时间】:2014-07-29 16:41:36
【问题描述】:

截至撰写本文时,我正在运行最新的 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'’

我是否缺少任何语言扩展?还是这个问题会更棘手一点?这是我的阴谋集团文件:http://lpaste.net/105329

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

【问题讨论】:

  • 错误信息表明 attoparsec 只需要指定一些 GHC 发布版本不需要的扩展。为什么要使用夜间快照?它们真的很不稳定,并且会引入大多数库维护者直到发布日期附近才解决的重大更改。
  • 啊,我明白了,谢谢。如果您的发行版的包管理器没有升级到 >=7.8 的标准方法是什么?再次感谢您的帮助。
  • 没有使用高于 7.8 的 GHC 的标准方法。唯一应该使用比 7.8 更新的 GHC 版本的人是从事 GHC 本身工作的人。在这一点上,甚至修复库以与 7.10 一起使用还为时过早——还有太多的变化即将到来。
  • 啊,我明白了,这是有道理的。但是,我自己在让 7.8.2.1 在 ubuntu 14.04 上工作时遇到了一些困难。我在 gentoo 中取得了一些成功,但我还精通端口。要启动并运行新时代的 haskell 工具链,您会选择什么发行版?

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


【解决方案1】:

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

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

请注意,ghc-7.8.3 即将发布(可能最多两周内);这是一个错误修复版本。此外,目前还没有包含 ghc-7.8 的 Haskell 平台版本,因此目前无法选择。

【讨论】:

    猜你喜欢
    • 2019-10-05
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2016-07-12
    相关资源
    最近更新 更多