0

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

问题似乎出在haskell-src-exts-1.15.0.1Agda 需要的 . 编译该库会遇到以下众所周知的问题(我相信),这是由Happy生成的代码与版本 7.8 中对 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#))))))

上面提到的文章描述了如何清理和重建包含不兼容的 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

遇到同样的问题。

有什么建议么?

4

1 回答 1

1

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

长答案:参见GHC 问题 9060

于 2014-08-05T12:12:03.870 回答