take-while

added
1.0

ns
clojure.core

type
function

(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.

                ;; Calculate the sum of all numbers under 1000:
user=> (reduce + (take-while (partial > 1000) (iterate inc 0)))
499500
            
                user=> (take-while neg? [-2 -1 0 1 2 3])
(-2 -1)

user=> (take-while neg? [-2 -1 0 -1 -2 3]) ; note: `take-while' stops traversing the collection when the predicate is false, as is different from `filter'.
(-2 -1)

user=> (take-while neg? [ 0 1 2 3])
()

user=> (take-while neg? [])
()

user=> (take-while neg? nil)
()
            
                ;;take the item while it's included in the set  
user=> (take-while #{[1 2][3 4]} #{[1 2]})
([1 2])
user=> (take-while #{[1 2][3 4]} #{[3 4]})
([3 4])
user=> (take-while #{[1 2][3 4]} #{[4 5]})
()
user=>(take-while #{[1 2][3 4]} #{[5 6] [1 2]}); return nil while any item is not included in the set
()