我们可以使用GHC API或其他东西加载非文本源模块,但是AST表达式,类似于haskell-src-exts Exp
type吗?这样我们就可以节省代码生成和解析的时间。
答案 0 :(得分:3)
我不认为GHC API暴露了AST接口(虽然可能是错误的),但模板Haskell确实如此。如果使用Language.Haskell.TH
Exp
结构构建表达式,则可以创建函数/声明并通过$(someTHFunction)
语法使用它们。
一个相当重要的警告是TH只在编译时运行,因此您需要预先生成所有内容。如果你想在运行时使用TH,我认为你需要漂亮打印模板haskell AST,然后在结果字符串上使用GHC API。