Clojure:相当于;“做”;来自公共Lisp

Clojure:相当于;“做”;来自公共Lisp,clojure,lisp,common-lisp,Clojure,Lisp,Common Lisp,菜鸟口齿不清的问题,抱歉的无知 Clojure中Common Lisp的do的等价物是什么?Clojure避免了这些顺序绑定形式,但同样的功能可以用while或loop来表达-每个样式中的第一个示例: ;; common lisp version (do ((temp-one 1 (1+ temp-one)) (temp-two 0 (1- temp-two))) ((> (- temp-one temp-two) 5) temp-one)) => 4

菜鸟口齿不清的问题,抱歉的无知


Clojure中Common Lisp的
do
的等价物是什么?

Clojure避免了这些顺序绑定形式,但同样的功能可以用
while
loop
来表达-每个样式中的第一个示例:

;; common lisp version
(do ((temp-one 1 (1+ temp-one))
       (temp-two 0 (1- temp-two)))
      ((> (- temp-one temp-two) 5) temp-one)) =>  4

;; clojure, while
(let [temp-one (atom 1)
      temp-two (atom 0)]
  (while (> (- @temp-one @temp-two) 5)
     (swap! temp-one inc)
     (swap! temp-two dec))
  @temp-one)

;; clojure, loop
(loop [temp-one 1 temp-two 0]
  (if (> (- temp-one temp-two) 5)
    temp-one
    (recur (inc temp-one) (dec temp-two))))