MultiStepper
type | removed v1.9.562 | added v0.0-2301 | Edit |
(MultiStepper. xform iters nexts)
(deftype MultiStepper [xform iters nexts]
Object
(hasNext [_]
(loop [iters (seq iters)]
(if-not (nil? iters)
(let [iter (first iters)]
(if-not ^boolean (.hasNext iter)
false
(recur (next iters))))
true)))
(next [_]
(dotimes [i (alength iters)]
(aset nexts i (.next (aget iters i))))
(prim-seq nexts 0))
(step [this lt]
(loop []
(if (and (not (nil? (.-stepper lt)))
(.hasNext this))
(if (reduced? (apply xform (cons lt (.next this))))
(when-not (nil? (.-rest lt))
(set! (.. lt -rest -stepper) nil))
(recur))))
(when-not (nil? (.-stepper lt))
(xform lt))))