我遇到了一个兼容性问题,试图在Ubuntu 14.04上使用GHC 7.8.3和Cabal 1.16.0.2的cabal install agda
。
问题似乎出在Agda需要的haskell-src-exts-1.15.0.1
上。编译该库会遇到以下众所周知的问题,这是由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
也遇到了同样的问题。
有什么建议吗?
简短的回答:阴谋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