我在使用模板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。
有谁知道为什么会这样?也许我错误地使用了一些代码?
答案 0 :(得分:0)
事实证明,在我的32位Ubuntu机器上使用GHC 7.4.2 32位,代码运行正常。所以我的猜测是问题在于操作系统或处理器架构的差异。
安装32位Haskell平台后,代码会编译。猜猜这是编译器中的一个错误。我也会尝试为此提交一个错误。应该用GHC还是模板haskell来完成?