【问题标题】:Dynamic loading of Haskell abstract syntax expressionHaskell 抽象语法表达式的动态加载
【发布时间】:2012-02-11 11:14:09
【问题描述】:

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

【问题讨论】:

    标签: haskell dynamic-loading ghc-api


    【解决方案1】:

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

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

    【讨论】:

    • 我也可以生成模板 Haskell 源代码。这可以被认为是生成 AST 表达式和生成 Haskell 文本源之间的折衷。
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多