Haskell 中是否有任何函数,在给定 Haskell 语法输入的情况下,返回扩展了所有语法糖的等效表达式?
例如,在 Clojure 中,我可以将 'a
传递给阅读器,它将返回 (quote a)
,这有助于我了解 '
只是 quote
函数的糖化形式。
最佳答案
Haskell Report很短,涵盖了所有兴趣的转换。特别是,您可能会喜欢 list comprehensions 上的部分。 , do syntax和隐式布局( informal 、 formal )。
您还可以要求 GHC 通过其众多的 -ddump
选项来转储您的代码应该是什么样子的想法;特别是我时不时地盯着 -ddump-simpl
。然而,这里有一个巨大的警告:报告并不要求将其指定的转换作为实际的脱糖到内核 Haskell 阶段来实现,只是实现的行为必须与对 Haskell 内核进行脱糖处理。因此,GHC 采取了这种余地,直接将糖去除为自己的内部语言; -ddump-simpl
将向您显示该内部语言的术语,而不是 Haskell 的术语。另一方面,它比报告更完整,因为它完全了解 GHC 知道的任何语言扩展所做的脱糖(而报告显然不涵盖任何语言扩展)。
关于Haskell:自动脱糖语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463903/