我应该使用哪个更好?:(减少+ ...)或(应用+ ...)?
(apply + (filter prime? (range 1 20)))
或
(reduce + (filter prime? (range 1 20)))
编辑:这是首要Clojure中从优化工具包中的源。
(defn prime? [n]
(cond
(or (= n 2) (= n 3)) true
(or (divisible? n 2) (< n 2)) false
:else
(let [sqrt-n (Math/sqrt n)]
(loop [i 3]
(cond
(divisible? n i) false
(< sqrt-n i) true
:else (recur (+ i 2)))))))
[Clojure:reduce vs. apply]的可能重复(http://stackoverflow.com/questions/3153396/clojure-reduce-vs-apply)。链接的问题比这个更新,但它有IMO更好的答案,所以我提名它为幸存者。 – amalloy 2012-05-29 19:14:56