【问题标题】:GHC incompatibility installing haskell-src-exts via cabalGHC 不兼容通过 cabal 安装 haskell-src-exts
【发布时间】:2014-08-03 11:52:17
【问题描述】:

我在 Ubuntu 14.04 上使用 GHC 7.8.3 和 Cabal 1.16.0.2 尝试 cabal install agda 时遇到了兼容性问题。

问题似乎与 Agda 需要的 haskell-src-exts-1.15.0.1 有关。编译该库会遇到以下well-known problem 导致(我相信)由Happy 生成的代码与版本7.8 中的a change to GHC 不兼容。

templates/GenericTemplate.hs:104:22:
    Couldn't match expected type ‘Bool’
                with actual type ‘Happy_GHC_Exts.Int#’
    In the expression:
      (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#))
    In a stmt of a pattern guard for
                   a case alternative:
      (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#))
    In a case alternative:
        n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#))
          -> (happyReduceArr Happy_Data_Array.! rule) i tk st
          where
              rule
                = (Happy_GHC_Exts.I#
                     ((Happy_GHC_Exts.negateInt#
                         ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))

article mentioned above 描述了如何清理和重建包含不兼容 Happy 生成的代码的库。但是,我无法为 haskell-src-exts-1.15.0.1 完成这项工作。特别是尝试

cabal unpack haskell-src-exts-1.15.0.1 
cd haskell-src-exts-1.15.0.1
cabal clean
cabal install

遇到同样的问题。

有什么建议吗?

【问题讨论】:

  • 我使用 Happy 1.19.4 无法重现该问题(上面的文章说“安装最新版本的 alex and happy”)。
  • 我安装了happy-1.19.4和alex-3.1.3,但还是遇到了同样的问题。
  • 仅供参考,我正在使用 Cabal 库的 1.20.0.1 版本的 cabal-install 版本 1.20.0.3。以下命令的输出是:cabal get haskell-src-extscd haskell-src-exts-1.15.0.1/cabal cleancabal configure -v
  • 我也在使用 cpphs 1.18.5。
  • 使用 cabal 1.20.0.3 重新安装所有库(参见 ghc.haskell.org/trac/ghc/ticket/9060)。

标签: installation ghc cabal agda happy


【解决方案1】:

简短回答: Cabal 1.16.* 与 GHC 7.8.3 不兼容,因此请安装最新版本的 cabal-install(例如版本 1.20.0.3),删除与 GHC 7.8 关联的目录。 3 从 ~/.ghc(例如 x86_64-linux-7.8.3)并再次安装所有内容。

长答案:见GHC issue 9060

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多