Haskell:自动解糖语法

时间:2014-01-30 17:51:48

标签: haskell clojure

在Haskell中是否有任何函数,在给定Haskell语法输入的情况下,返回一个扩展了所有语法糖的等效表达式?

例如,在Clojure中,我可以将'a传递给读者,它会返回(quote a),这有助于我了解'只是{{1}的加糖形式功能。

1 个答案:

答案 0 :(得分:8)

Haskell Report很短,涵盖了所有感兴趣的变换。特别是,您可能会喜欢list comprehensionsdo syntax和隐式布局(informalformal)上的部分。

您还可以要求GHC通过其众多-ddump选项来抛弃您的代码应该是什么样子的想法;特别是我不时地盯着-ddump-simpl。但是,这里有一个很大的警告:报告并不要求它指定的转换实现为实际的desugaring-to-kernel-Haskell阶段,只是实现必须表现的方式与鉴于对内核Haskell的贬低。所以GHC将这种余地直接用于自己的内部语言;并且-ddump-simpl将以内部语言向您显示术语,而不是在Haskell中。另一方面,它比报告更完整,因为它完全了解GHC知道的任何语言扩展所做的贬低(而报告显然不包括任何语言扩展)。