take-while returns the longest prefix of a sequential input whose elements satisfy a one-argument predicate. It stops at the first element for which the predicate is false; with only the predicate, it returns a transducer instead of immediately processing a collection. section 10.2
Use the two arities according to the processing style:
- `(take-while pred coll)` returns a lazy sequence containing matching elements from the head of `coll`. section 10.2
- `(take-while pred)` returns a transducer that terminates reduction when the predicate fails. section 7.2
- `pred` must accept one argument and return logical true or false; `coll` may be any seqable input or `nil`. section 10.2
- The result contains no elements after the first predicate failure, even when later elements would satisfy the predicate. section 10.2
Tokenizing consecutive matching runs
A tokenizer can combine `drop-while` and `take-while` to extract consecutive runs. For `(tokenize odd? '(1 4 1 5 9 2 6 4 3 5 8 9 3 2 6))`, the result is `((1) (1 5 9) (3 5) (9 3))`.

