Haskell:自动脱糖语法

标签 haskell clojure

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

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

最佳答案

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

您还可以要求 GHC 通过其众多的 -ddump 选项来转储您的代码应该是什么样子的想法;特别是我时不时地盯着 -ddump-simpl 。然而,这里有一个巨大的警告:报告并不要求将其指定的转换作为实际的脱糖到内核 Haskell 阶段来实现,只是实现的行为必须与对 Haskell 内核进行脱糖处理。因此,GHC 采取了这种余地,直接将糖去除为自己的内部语言; -ddump-simpl 将向您显示该内部语言的术语,而不是 Haskell 的术语。另一方面,它比报告更完整,因为它完全了解 GHC 知道的任何语言扩展所做的脱糖(而报告显然不涵盖任何语言扩展)。

关于Haskell:自动脱糖语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463903/

相关文章:

haskell - 不安全 IO 或 : Haskeline and Directories

debugging - 帮助调试 Haskell 中大量数据的意外 takeWhile 行为

Haskell:可怕的类型签名

scala - 是否有像 Clojurescript 这样的 Scala?又名集成 Scala 单页应用程序

clojure - 如何将 clojure 的 #inst 文字转换为等效的 java.time 类型?

clojure - 有没有办法读取 clojure 文件中的所有表单?

clojure - 为什么 recur 期望使用 %& 的短格式函数有一个参数

haskell - fun 声明中的类型错误

Haskell - 类似 Lisp 的符号功能

clojure - 为什么 `disj` 和 `dissoc` 在 Clojure 中有不同的功能?