Langage.Haskell.TH.report是如何工作的?

时间:2012-03-07 11:04:29

标签: haskell template-haskell

不幸的是,许多Template Haskell函数完全没有文档。一个这样的功能是report。它需要BoolString,并产生编译错误,并将指定的字符串作为错误消息。有没有人知道Bool到底是怎么回事?尽我所知,两种价值完全相同......

2 个答案:

答案 0 :(得分:9)

如果BoolTrue,则会报告错误;如果是False,则会报告“警告”,这意味着模板代码将继续运行以收集更多“警告”。

答案 1 :(得分:2)

查看源代码,report调用qReport,这是一个名为Quasi的类的方法。 这个方法实际上有一些该死的文档 - 尽管只是一个小小的片段。我引用:

  

报告错误(True)或警告(False)...但继续;使用fail停止

所以它似乎使我的TH splice崩溃并带有相应的错误消息,我只需要调用fail。希望这些信息对任何试图解决这个问题的人都有用......