File tree Expand file tree Collapse file tree 4 files changed +56
-36
lines changed
cljs/clojure/core/rrb_vector
clojure/clojure/core/rrb_vector
cljs/clojure/core/rrb_vector
clojure/clojure/core/rrb_vector Expand file tree Collapse file tree 4 files changed +56
-36
lines changed Original file line number Diff line number Diff line change 480480
481481 IKVReduce
482482 (-kv-reduce [this f init]
483- (loop [i 0
484- j 0
485- init init
486- arr (-array-for this i)
487- lim (dec (alength arr))
488- step (inc lim)]
489- (let [init (f init (+ i j) (aget arr j))]
490- (if (reduced? init)
491- @init
492- (if (< j lim)
493- (recur i (inc j) init arr lim step)
494- (let [i (+ i step)]
495- (if (< i cnt)
496- (let [arr (-array-for this i)
497- len (alength arr)
498- lim (dec len)]
499- (recur i 0 init arr lim len))
500- init)))))))
483+ (if (zero? cnt)
484+ init
485+ (loop [i 0
486+ j 0
487+ init init
488+ arr (-array-for this i)
489+ lim (dec (alength arr))
490+ step (inc lim)]
491+ (let [init (f init (+ i j) (aget arr j))]
492+ (if (reduced? init)
493+ @init
494+ (if (< j lim)
495+ (recur i (inc j) init arr lim step)
496+ (let [i (+ i step)]
497+ (if (< i cnt)
498+ (let [arr (-array-for this i)
499+ len (alength arr)
500+ lim (dec len)]
501+ (recur i 0 init arr lim len))
502+ init))))))))
501503
502504 IComparable
503505 (-compare [this that]
Original file line number Diff line number Diff line change 10181018
10191019 IKVReduce
10201020 (kv-reduce [this f init]
1021- (loop [i (int 0 )
1022- j (int 0 )
1023- init init
1024- arr (.arrayFor this i)
1025- lim (unchecked-dec-int (.alength am arr))
1026- step (unchecked-inc-int lim)]
1027- (let [init (f init (unchecked-add-int i j) (.aget am arr j))]
1028- (if (reduced? init)
1029- @init
1030- (if (< j lim)
1031- (recur i (unchecked-inc-int j) init arr lim step)
1032- (let [i (unchecked-add-int i step)]
1033- (if (< i cnt)
1034- (let [arr (.arrayFor this i)
1035- len (.alength am arr)
1036- lim (unchecked-dec-int len)]
1037- (recur i (int 0 ) init arr lim len))
1038- init)))))))
1021+ (if (zero? cnt)
1022+ init
1023+ (loop [i (int 0 )
1024+ j (int 0 )
1025+ init init
1026+ arr (.arrayFor this i)
1027+ lim (unchecked-dec-int (.alength am arr))
1028+ step (unchecked-inc-int lim)]
1029+ (let [init (f init (unchecked-add-int i j) (.aget am arr j))]
1030+ (if (reduced? init)
1031+ @init
1032+ (if (< j lim)
1033+ (recur i (unchecked-inc-int j) init arr lim step)
1034+ (let [i (unchecked-add-int i step)]
1035+ (if (< i cnt)
1036+ (let [arr (.arrayFor this i)
1037+ len (.alength am arr)
1038+ lim (unchecked-dec-int len)]
1039+ (recur i (int 0 ) init arr lim len))
1040+ init))))))))
10391041
10401042 CollFold
10411043 ; ; adapted from #'clojure.core.reducers/foldvec
Original file line number Diff line number Diff line change 8383 (reduce + 0 (r/map identity (seq v1)))
8484 (reduce + 0 (r/map identity (seq v2)))))))
8585
86+ (deftest test-reduce-3
87+ (let [v0 (vec [])
88+ rv0 (fv/vec [])]
89+ (testing " reduce"
90+ (is (= (reduce + v0) (reduce + rv0))))
91+ (testing " reduce-kv"
92+ (is (= (reduce-kv + 0 v0) (reduce-kv + 0 rv0))))))
93+
8694(deftest test-seq
8795 (let [v (fv/vec (range 128 ))
8896 s (seq v)]
Original file line number Diff line number Diff line change 8383 (reduce + 0 (r/map identity (seq v1)))
8484 (reduce + 0 (r/map identity (seq v2)))))))
8585
86+ (deftest test-reduce-3
87+ (let [v0 (vec [])
88+ rv0 (fv/vec [])]
89+ (testing " reduce"
90+ (is (= (reduce + v0) (reduce + rv0))))
91+ (testing " reduce-kv"
92+ (is (= (reduce-kv + 0 v0) (reduce-kv + 0 rv0))))))
93+
8694(deftest test-seq
8795 (let [v (fv/vec (range 128 ))
8896 s (seq v)]
You can’t perform that action at this time.
0 commit comments