如何使用Template Haskell来获取函数体?

时间:2012-12-21 02:14:10

标签: haskell template-haskell

目前我正在尝试从Haskell子集进行转换,而不必处理所有解析,类型检查等问题。文档没有帮助我找出一个函数来获取函数的主体(所有定义)的名称。

此调用的上下文应该类似于

fac 0 = 1
fac x = z * fac (x - 1)

getBody = ...

main = do
    x <- runQ $ getBody [| fac |]
    print x

有谁知道

  1. 是否有关于TH的一些好的和最新的文档(不是关于Hackage的参考)或
  2. 如何制作getBody?

1 个答案:

答案 0 :(得分:10)

通常,使用reify函数查找TH定义的方法。但是:

看起来你需要找到另一条路线。您是否考虑过使用the haskell-src-exts package进行解析和/或GHC API或基于它的东西?