3

因此,TemplateHaskell 的大多数准引用器都有一个选项,您可以在其中读取文件中的准引用字符串,而不是在括号中键入它,例如[quoter|... some code ...|].

我想知道,对于普通的 TemplateHaskell 引号括号是否有等效的方法?即[e|...|] [t|...|][d|...|]

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

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

4

2 回答 2

2

使用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。也许在你的情况下这并不重要?

于 2014-01-07T06:33:10.543 回答
2

haskell-src-meta是一个用于将 haskell 源代码解析为模板 haskell AST 的库。具体来说,如果要从文件中读取字符串,将其解析为 Haskell 模块,请使用Language.Haskell.Meta.Parse.parseHsModule

于 2014-01-07T06:34:00.077 回答