在什么情况下您会使用其中一种而不是另一种?为什么? 最佳答案 阅读器宏以普通宏无法做到的方式改变-6ren">
gpt4 book ai didi

clojure - "regular"和 "reader"宏有什么区别?

转载 作者:行者123 更新时间:2023-12-02 23:20:26 25 4
gpt4 key购买 nike

我对 Clojure 比较陌生,无法完全理解阅读器宏常规宏之间的区别,以及为什么差异如此显着。 p>

在什么情况下您会使用其中一种而不是另一种?为什么?

最佳答案

阅读器宏以普通宏无法做到的方式改变语言的语法(例如,@foo 变成 (deref foo))无法去掉括号,因此您必须执行类似 (@ foo)) 的操作。它被称为 reader 宏,因为它是在 repl 的 read 传递中实现的(查看 source )。

作为 clojure 开发人员,您只会创建常规宏,但您将使用大量读取器宏,而不必明确考虑它们。

阅读器宏的完整列表在这里:https://clojure.org/reference/reader并包括常见的内容,例如 @ '#{}

Clojure(与其他一些 lisp 不同)不支持用户定义的读取器宏,但通过 tagged literals 内置了一些可扩展性。 (例如#inst#uuid)

关于clojure - "regular"和 "reader"宏有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44113901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com