I agree with number 2: it would be very nice to have this in contrib.
I needed it last month and rolled my own (less clean) version.

Thomas

On Sep 10, 10:26 pm, Matt  Smith <m0sm...@gmail.com> wrote:
> problem: convert a collection [1 2 0 1 2 3 0 1 2 3 0 0 1 2] into
> partitions like:
> ((1 2) (0 1 2 3) (0 1 2 3) (0) (0 1 2))
> In this case, start each partition on a 0.
>
> I looked at the various partition functions but none of them would do
> the trick without adding unnecessary complexity.  Instead  I wrote a
> new function based on partition-by:
>
> Solution:
> (defn partition-starting-every
>   "Partition the sequence starting each partition when the f is true."
>   [f coll]
>   (if-let [coll (seq coll)]
>     (let [p (cons (first coll) (take-while (complement f) (rest
> coll)))]
>       (lazy-seq (cons p (partition-starting-every f (drop (count p)
> coll)))))))
>
> user=>(partition-starting-every zero? [1 2 0 1 2 3 0 1 2 3 0 0 1 2])
> ((1 2) (0 1 2 3) (0 1 2 3) (0) (0 1 2))
>
> Questions:
> 1 - Is there a simpler way to do this using existing partition
> functions?
> 2 - If not, is this something people are interested in having
> contributed?
>
> In looking at the partition functions they are very similar.  Maybe
> there is a why to combine them in to a single function.

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

Reply via email to