我正在完成本教程:http://moxleystratton.com/clojure/clojure-tutorial-for-the-non-lisp-programmer
并且遇到了这个片段:
user=> (loop [i 0]
(when (< i 5)
(println "i:" i)
(recur (inc i))))
i: 0
i: 1
i: 2
i: 3
i: 4
nil
对我的翻译很有用!
❯ lein repl
nREPL server started on port 50974
REPL-y 0.1.10
Clojure 1.5.1
现在我正在寻找关于recur
是什么的一些文档。
它不在这里! http://clojure.github.io/clojure/api-index.html
我花了一段时间才发现它是“特殊形式”,因此在this page中有所描述。
那里有一个具有单一连贯索引的编译吗?
答案 0 :(得分:8)
尝试使用REPL中的内置文档:
user=> (doc recur)
-------------------------
recur
(recur exprs*)
Special Form
Evaluates the exprs in order, then, in parallel, rebinds
the bindings of the recursion point to the values of the exprs.
Execution then jumps back to the recursion point, a loop or fn method.
Please see http://clojure.org/special_forms#recur
它适用于函数,宏,特殊形式,变量 - 几乎所有东西。
答案 1 :(得分:2)
clojuredocs.org上的搜索框是一个很好的起点,它们提供了非常complete list的表单和功能。请注意,目前Clojure Docs与最新版本的clojure不同,但存在一些细微差别。在实践中,official api page足够完整且最新。它没有所有的特殊形式,虽然在clojure中很少有特殊形式,所以这通常不是问题