Haskell - 如何使用新的4参数准引号

时间:2011-07-26 22:03:36

标签: haskell template-haskell

看起来准引语语法已经改为现在接受4个参数[link]。有没人用过呢?谢谢。我只是想构建一些非常简单的东西,而网上的例子现在都无法使用。

提前致谢。

2 个答案:

答案 0 :(得分:3)

QuasiQuoter的每个部分只是一个接受字符串(准引用的内容)的函数,并在Q monad中返回一个适当的值。如果你的quasiquoter不支持在某些上下文中使用,只需返回一个错误,例如:

someQuoter = QuasiQuoter { quoteType = const $ fail "type context unsupported" 
                         , -- etc ...
                         }

fail方法调用report True,这会产生编译器错误。这几乎是正确的行为。

答案 1 :(得分:2)

基本上,变化是您现在可以为类型和声明(除表达式和模式之外)制作quasiquoter。

如果你不想使用它们,可以将类型/声明字段设置为error "This quasiquoter doesn't support splicing types/declarations"