2014-01-07 42 views

回答

6

Clojure的避免了這些類型的順序裝訂形式,但同樣的功能可以與whileloop來表達 - 從每個風格CLHS第一個例子:

;; 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))))