模板Haskell中的无点样式



考虑以下Template Haskell函数:

composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = x y -> [| $(x) . $(y) |]

是否可以从方程的右侧删除lambda表达式,并使用无点样式编写composeQ

没有通用的方法将表达式拼接到任何无点风格的引号中,但这种特殊情况可以这样实现:

composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = flip infixApp [|(.)|]

这里是翻转infixApp,它通常将参数按left op right的顺序转换为op left right,然后为其提供合成运算符。现在我们有了一个无点函数,它等价于原来的composeQ

相关内容

  • 没有找到相关文章

最新更新