【问题标题】:Is it possible to roll your own syntax sugar (like do-notation, or arrow-notation) in Haskell?是否可以在 Haskell 中滚动您自己的语法糖(如 do-notation 或 arrow-notation)?
【发布时间】:2011-03-27 14:55:31
【问题描述】:

嗯,这个问题是不言自明的。假设我想实现一些特殊的语法只是为了好玩。是否可以?我应该使用什么工具?

【问题讨论】:

    标签: haskell syntactic-sugar do-notation


    【解决方案1】:

    Haskell 标准中没有这样的元语法,但在 GHC 中有。您可以使用 GHC“准引用”工具(不同于 GHC 的“Template Haskell”工具)进行几乎任何您想要的符号。

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

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

    【讨论】:

      【解决方案2】:

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

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

      还有更多。另一种方法是给GHC打补丁,但是这种方法比较难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-05
        • 2013-05-19
        • 1970-01-01
        • 2021-08-14
        • 2017-11-15
        • 2015-08-22
        • 2014-03-26
        • 1970-01-01
        相关资源
        最近更新 更多