Clojure 什么是';减少';函数do和如何使用它
在回答此问题时,响应者使用函数 我看了一下文件和来源,无法完全理解Clojure 什么是';减少';函数do和如何使用它,clojure,reduce,Clojure,Reduce,在回答此问题时,响应者使用函数 我看了一下文件和来源,无法完全理解 (defn reduced "Wraps x in a way such that a reduce will terminate with the value x" {:added "1.5"} [x] (clojure.lang.Reduced. x)) 在上面的例子中,我认为(reduced s1)应该结束reduce并返回s1 使用reduce+reduce是否等同于假设的reduce while或re
(defn reduced
"Wraps x in a way such that a reduce will terminate with the value x"
{:added "1.5"}
[x]
(clojure.lang.Reduced. x))
在上面的例子中,我认为(reduced s1)
应该结束reduce并返回s1
使用reduce+reduce是否等同于假设的reduce while或reduce until函数(如果存在)?reduced提供了一种使用提供的值打破reduce的方法 例如,在序列中添加数字
(reduce (fn [acc x] (+ acc x)) (range 10))
返回45
(reduce (fn [acc x] (if (> acc 20) (reduced "I have seen enough") (+ acc x))) (range 10))
返回“我看得够多了”源代码
reduced
并没有告诉您很多信息-您必须查看reduce
的源代码才能真正了解发生了什么。即使是reduce
的源代码也会调用一些实现方法。
(reduce (fn [acc x] (if (> acc 20) (reduced "I have seen enough") (+ acc x))) (range 10))