为什么GHC不会终止这个GADT模板Haskell模块?

时间:2013-01-25 15:52:13

标签: compilation ghc template-haskell gadt

我在使用模板Haskell生成GADT时遇到问题。问题是我无法完全编译代码。加载文件时GHCI不会终止,并且ghc进程会占用大量内存和CPU(2.4GB,50~70%)。

我试图做一个最小的例子,它仍然发生。如果我使用牛津符号([| |])或通过手动应用TH数据类型来构建函数并不重要。 考虑一下这个简单的模块:

{-# LANGUAGE GADTs, TemplateHaskell #-}
module Test where
$( [d| data Test a where
         T :: Test String
     |] )

我在Haskell平台上使用OSC Mountain Lion上的GHC 7.4.2 for x64。

有谁知道为什么会这样?也许我错误地使用了一些代码?

1 个答案:

答案 0 :(得分:0)

事实证明,在我的32位Ubuntu机器上使用GHC 7.4.2 32位,代码运行正常。所以我的猜测是问题在于操作系统或处理器架构的差异。

安装32位Haskell平台后,代码会编译。猜猜这是编译器中的一个错误。我也会尝试为此提交一个错误。应该用GHC还是模板haskell来完成?