Hi, Am 08.08.2010 um 05:27 schrieb David Cabana:
> Using a vector instead of a list as the accumulator makes it possible > to skip the mapping of reverse used in the earlier version of pw: > > (defn pw [f? x] > (let [phi (fn [a e] > (if (f? e) > (cons [e] a ) > (cons (conj (first a) e) > (rest a))))] > (reverse > (reduce phi [] x)))) Just for fun another low-level solution: (defn partition-when [pred coll] (let [step (fn [p s] (if s (let [fst (first s)] (if (pred fst) [p s] (recur (conj p fst) (next s)))) [p nil]))] (lazy-seq (when-let [s (seq coll)] (let [[p r] (step [(first s)] (next s))] (cons p (partition-when pred r))))))) Hopefully not holding onto the head, as lazy as it can get and working with infinite input. 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