【发布时间】: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-exts、cd haskell-src-exts-1.15.0.1/、cabal clean和cabal configure -v? -
我也在使用 cpphs 1.18.5。
-
使用 cabal 1.20.0.3 重新安装所有库(参见 ghc.haskell.org/trac/ghc/ticket/9060)。
标签: installation ghc cabal agda happy