gpt4 book ai didi

clojure - 编译clojure文件的步骤是什么?

转载 作者:行者123 更新时间:2023-12-02 01:51:41 25 4
gpt4 key购买 nike

我很想知道当 clojure 文件编译成类文件时实际发生了什么。当文件被 aot 编译时,宏会发生什么?

repl 评估和编译之间有什么区别吗?

最佳答案

关于宏缩略图评论是正确的。
Reader 总是先评估宏,然后再执行其他任何操作,就像这样。

Evaluation Cycle of Clojure

这就是为什么有些事情可以作为宏而不是作为函数来完成的原因。
示例:or是一个宏,原因很简单。让我们看看如何定义 or作为宏或函数。

(defmacro or
([] nil)
([x] x)
([x & next]
`(let [or# ~x]
(if or# or# (or ~@next)))))


(defn or
([] nil)
([arg] arg)
([arg & args]
(if arg arg (or args))

现在,如果您尝试使用 (or 1 (println :foo)) 来调用这两个函数宏将简单地返回 1,因此该函数将返回 1 并打印“:foo”。

上图对此进行了解释。读者首先通过重构来扩展源代码,然后评估参数。函数首先评估参数,然后是主体。

编译为类将在评估步骤附近。

关于clojure - 编译clojure文件的步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22318069/

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