#114
Global take-while
| Difficulty: | Medium | 
| Topics: | seqs higher-order-functions | 
take-while is great for
filtering sequences, but it limited:
you can only examine a single item of the sequence at a time.
What if you need to keep track of
some state as you go over the sequence?
Write a function which accepts an integer n,
a predicate p, and a sequence.
It should return a lazy sequence of items in the list up to,
but not including, the nth item that satisfies the predicate.
![]()  | (= [2 3 5 7 11 13]
                       (__ 4 #(= 2 (mod % 3))
                            [2 3 5 7 11 13 17 19 23])) | 
![]()  | (= ["this" "is" "a" "sentence"]
                       (__ 3 #(some #{\i} %)
                            ["this" "is" "a" "sentence" "i" "wrote"])) | 
![]()  | (= ["this" "is"]
                       (__ 1 #{"a"}
                            ["this" "is" "a" "sentence" "i" "wrote"])) | 

