Haskell:自动解糖语法

buk*_*zor 6 haskell clojure

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

例如,在Clojure中,我可以传递'a给读者,它将返回(quote a),这有助于我了解这'只是quote函数的含糖形式.

Dan*_*ner 8

Haskell的报告是很短,覆盖所有感兴趣的转换.特别是,您可能会喜欢列表推导,语法和隐式布局(非正式,正式)部分.

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