目前,我正在尝试从 Haskell 子集进行翻译,而无需处理所有解析、类型检查等问题。文档并没有帮助我找出一个函数来通过其名称获取函数的主体(所有定义)。
此调用的上下文应类似于
fac 0 = 1
fac x = z * fac (x - 1)
getBody = ...
main = do
x <- runQ $ getBody [| fac |]
print x
有谁知道
最佳答案
通常,使用 TH 查找某事物定义的方法是使用 reify
功能。然而:
reify
at run-time通过 runQ
.它需要的信息在编译期间不可用。 reify
获取函数定义是not implemented due to lack of interest反正。 看来您需要另寻路线。您是否考虑过使用 the
haskell-src-exts
package用于解析和/或 GHC API 或基于它的东西?
关于haskell - 如何使用 Template Haskell 获取函数体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983391/