Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们可以使用 GHC API 或其他东西来加载不是文本源模块,而是 AST 表达式,类似于haskell-src-extsExp类型?这样我们可以节省代码生成和解析的时间。
Exp
我不认为 GHC API 公开了 AST 接口(虽然可能是错误的),但 Template Haskell 可以。如果您使用该Language.Haskell.TH Exp结构构建表达式,您可以创建函数/声明并通过$(someTHFunction)语法使用它们。
Language.Haskell.TH
$(someTHFunction)
一个相当重要的警告是 TH 仅在编译时运行,因此您需要预先生成所有内容。如果您想在运行时使用 TH,我认为您需要漂亮地打印模板 haskell AST,然后在结果字符串上使用 GHC API。