1

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

我试图做一个最小的例子,它仍然会发生。我是使用牛津符号 ( [| |]) 还是通过手动应用 TH 数据类型来构建函数都没有关系。考虑这个简单的模块:

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

我在用于 x64 的 Haskell 平台的 OSX Mountain Lion 上使用 GHC 7.4.2。

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

4

1 回答 1

0

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

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

于 2013-01-25T16:15:08.403 回答