5

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

4

1 回答 1

3

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

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

于 2012-01-16T17:14:50.200 回答