Hi, On 3 Apr., 12:24, Ken Wesson <kwess...@gmail.com> wrote:
> I don't. :) > > (defn drop-by [f coll] > (let [fs (map f coll) > ps (map = fs (rest fs)) > zs (map list ps (rest coll))] > (map second (drop-while first zs)))) > > user=> (drop-by #(mod % 3) [1 4 1 7 34 16 10 2 99 103 42]) > (2 99 103 42) > > I especially like the symmetry of using take-while for the one and > drop-while for the other, under the hood. Or a bit less involved. (defn take-by [f coll] (lazy-seq (when-let [s (seq coll)] (let [fst (first s) value (f fst)] (cons fst (take-while #(-> % f (= value)) (rest s))))))) (defn drop-by [f coll] (lazy-seq (when-let [s (seq coll)] (let [fst (first s) value (f fst)] (drop-while #(-> % f (= value)) (rest s)))))) Sincerely Meikel -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en