是否有可能在Haskell中推出自己的语法糖(如do-notation或arrow-notation)?

时间:2011-03-27 14:55:32

标签: haskell syntactic-sugar do-notation

嗯,这个问题是自我解释的。假设我想实现一些特殊的语法只是为了好玩。可能吗?我应该使用哪些工具?

2 个答案:

答案 0 :(得分:17)

Haskell标准中没有这样的元语法,但在GHC中有。您可以使用GHC“准报价”工具(与GHC的“模板Haskell”工具不同)制作您想要的任何符号。

GHC user guide很短,主要指向haskell wiki page on Quasiquotation和实现者home page,这两者都指向原始出版物:"Why It’s Nice to be Quoted: Quasiquoting for Haskell"

人们使用准引用来嵌入XML语法,正则表达式,特殊字符串和文本形式,并且“JMacro是用于编程生成Javascript代码的库。”

答案 1 :(得分:8)

我想,最好的方法是编写自定义预处理器。几种语法扩展从这种方法开始。例如,见:

  • DrIFt:自动生成类型类实例
  • arrowp:箭头符号的预处理器
  • c2hs:为FFI绑定自动生成编组信息和类型签名

还有更多。另一种方法是修补GHC,但这种方法相当困难。