function | since v0.0-927 | clojure.core/take-while | Edit |
(take-while pred)
(take-while pred coll)
Returns a lazy sequence of successive items from coll
while (pred item)
returns true. pred
must be free of side-effects.
Returns a transducer when no collection is provided.
Returns a lazy sequence of successive items from coll while (pred item) returns logical true. pred must be free of side-effects. Returns a transducer when no collection is provided.
(defn take-while
([pred]
(fn [rf]
(fn
([] (rf))
([result] (rf result))
([result input]
(if (pred input)
(rf result input)
(reduced result))))))
([pred coll]
(lazy-seq
(when-let [s (seq coll)]
(when (pred (first s))
(cons (first s) (take-while pred (rest s))))))))