从TemplateHaskell中的文件读取模块

时间:2014-01-07 04:30:14

标签: haskell template-haskell elm

因此,TemplateHaskell的大多数准引用都有一个选项,您可以从文件中读取准引用的字符串,而不是像[quoter|... some code ...|]这样在括号中输入。

我想知道,对于普通的TemplateHaskell引用括号是否有相当于此的内容?即[e|...|] [t|...|][d|...|]

我正在编写一个将Haskell代码转换为Elm的转换程序,同时保留我的Haskell声明,以便我可以使用Haskell进行服务器端编程,使用Elm进行Javascript生成。要做这个翻译,我希望能够读入Haskell模块,使用TemplateHaskell遍历ADT,并将转换后的代码生成为字符串,同时另外将模块中的Haskell声明注入代码。

我有这个工作,但只有当我将我的Haskell代码编写为[d|some decs|]时。我希望能够做同样的事情,但是从外部文件中读取。

2 个答案:

答案 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