因此,TemplateHaskell的大多数准引用都有一个选项,您可以从文件中读取准引用的字符串,而不是像[quoter|... some code ...|]
这样在括号中输入。
我想知道,对于普通的TemplateHaskell引用括号是否有相当于此的内容?即[e|...|]
[t|...|]
和[d|...|]
。
我正在编写一个将Haskell代码转换为Elm的转换程序,同时保留我的Haskell声明,以便我可以使用Haskell进行服务器端编程,使用Elm进行Javascript生成。要做这个翻译,我希望能够读入Haskell模块,使用TemplateHaskell遍历ADT,并将转换后的代码生成为字符串,同时另外将模块中的Haskell声明注入代码。
我有这个工作,但只有当我将我的Haskell代码编写为[d|some decs|]
时。我希望能够做同样的事情,但是从外部文件中读取。
答案 0 :(得分:1)
使用http://hackage.haskell.org/package/haskell-src-meta中的parseDecs。 [d| lets you capture the right variables a reliably from the place the quote is written |]
与haskell-src-meta不同。也许这在你的情况下并不重要?
答案 1 :(得分:1)
haskell-src-meta是一个用于将haskell源解析为模板haskell AST的库。具体来说,如果要从文件中读取字符串,将其解析为Haskell模块,则使用Language.Haskell.Meta.Parse.parseHsModule