我们可以使用GHC API或其他方式加载不是文本源模块,而是AST表达式吗,类似于 haskell-src-extsExp类型?这样,我们可以节省代码生成和解析的时间。

有帮助吗?

解决方案

我不认为GHC API公开AST接口(尽管可能是错误的),但是Template Haskell可以。如果使用Language.Haskell.THExp结构构建表达式,则可以创建函数/声明,并通过$(someTHFunction)语法使用它们。

一个相当重要的警告是TH仅在编译时运行,因此您需要预先生成所有内容。如果您想在运行时使用TH,我认为您需要对模板haskell AST进行漂亮的打印,然后在生成的字符串上使用GHC API。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top