在Haskell中是否有任何函数,在给定Haskell语法输入的情况下,返回一个扩展了所有语法糖的等效表达式?
例如,在Clojure中,我可以将'a
传递给读者,它会返回(quote a)
,这有助于我了解'
只是{{1}的加糖形式功能。
答案 0 :(得分:8)
Haskell Report很短,涵盖了所有感兴趣的变换。特别是,您可能会喜欢list comprehensions,do syntax和隐式布局(informal,formal)上的部分。
您还可以要求GHC通过其众多-ddump
选项来抛弃您的代码应该是什么样子的想法;特别是我不时地盯着-ddump-simpl
。但是,这里有一个很大的警告:报告并不要求它指定的转换实现为实际的desugaring-to-kernel-Haskell阶段,只是实现必须表现的方式与鉴于对内核Haskell的贬低。所以GHC将这种余地直接用于自己的内部语言;并且-ddump-simpl
将以内部语言向您显示术语,而不是在Haskell中。另一方面,它比报告更完整,因为它完全了解GHC知道的任何语言扩展所做的贬低(而报告显然不包括任何语言扩展)。