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

Raf*_*ini 19 haskell syntactic-sugar do-notation

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

Chr*_*icz 17

在Haskell标准中没有这样的元语法,但在GHC中存在.您可以使用GHC"准报价"工具(与GHC的"模板Haskell"工具不同)制作您想要的几乎所有符号.

关于这一点的GHC用户指南很短,主要指向Quasiquotation上的haskell wiki 页面和实现者的主页,这两者都指向原始出版物:"为什么引用很好:Haskell的Quasiquoting".

人们使用准引用来嵌入XML语法,正则表达式,特殊字符串和文本形式,而在"JMacro是一个用于编程生成Javascript代码的库".


fuz*_*fuz 8

我想,最好的方法是编写一个自定义预处理器.几种语法扩展从这种方法开始.例如,请参阅:

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

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