动态加载Haskell抽象语法表达式
-
29-10-2019 - |
题
我们可以使用GHC API或其他方式加载不是文本源模块,而是AST表达式吗,类似于 haskell-src-extsExp
类型?这样,我们可以节省代码生成和解析的时间。
解决方案
我不认为GHC API公开AST接口(尽管可能是错误的),但是Template Haskell可以。如果使用Language.Haskell.TH
的Exp
结构构建表达式,则可以创建函数/声明,并通过$(someTHFunction)
语法使用它们。
一个相当重要的警告是TH仅在编译时运行,因此您需要预先生成所有内容。如果您想在运行时使用TH,我认为您需要对模板haskell AST进行漂亮的打印,然后在生成的字符串上使用GHC API。
不隶属于 StackOverflow