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