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

pol*_*.ph 7 haskell template-haskell

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

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

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

getBody = ...

main = do
    x <- runQ $ getBody [| fac |]
    print x
Run Code Online (Sandbox Code Playgroud)

有谁知道

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

C. *_*ann 10

通常,使用reify函数找到TH定义的方法是使用该函数.然而:

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