gpt4 book ai didi

clojure - Clojure当宏

转载 作者:行者123 更新时间:2023-12-03 08:46:12 24 4
gpt4 key购买 nike

我正在浏览clojure源,对when宏的定义方式感到惊讶:

user=> (source when)
(defmacro when
"Evaluates test. If logical true, evaluates body in an implicit do."
{:added "1.0"}
[test & body]
(list 'if test (cons 'do body)))
nil
user=>

我期望它写成这样的东西:
(defmacro when [test & body] `(if ~test (do ~@body)))

为什么实际的宏以这种不太常见的方式编写?

最佳答案

core.clj是从上到下构建的,首先从Java提供的功能开始,然后逐步构建Clojure的所有要求。定义when时,语法引用尚不存在。when宏在core.clj的line 456上定义,并且直到line 682. the when宏用于定义语法引用时,语法引用的要求才可用

关于clojure - Clojure当宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11803911/

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