Not a rational for why there's no partition transducer in core but I have a
partition transducer in this lib (https://github.com/cgrand/xforms).

=> (sequence (x/partition 3) (range 8))
([0 1 2] [3 4 5])
=> (sequence (x/partition 3 2) (range 8))
([0 1 2] [2 3 4] [4 5 6])
=> (sequence (x/partition 3 2 "padding") (range 8))
([0 1 2] [2 3 4] [4 5 6] [6 7 \p])

Additionally when the last argument is a function it's considered to be a
transducer for each partition.
=> (sequence (x/partition 3 (x/reduce +)) (range 8))
(3 12)

And you can get fancy:
=> (sequence (x/partition 3 (x/transjuxt {:sum (x/reduce +)
                                          :avg (x/reduce x/avg)
                                          :items (x/into [])})) (range 8))
({:sum 3, :avg 1, :items [0 1 2]} {:sum 12, :avg 4, :items [3 4 5]})

On Wed, Oct 12, 2016 at 6:14 AM, Mars0i <marsh...@logical.net> wrote:

> partition-all has a transducer variant, but partition doesn't.  Just
> curious why.
>
> The difference between the non-transducer functionalities is that, for
> example, (partition-all n coll) will return shorter-than-n stub sequences
> at the end of the main output sequence if the (count coll) isn't divisible
> by n, while partition will simply stop ignore leave the short sequences out
> of the main sequence (unless you use the four-argument syntax, in which an
> extra argument is used to construct extra sequences at the end of the main
> sequence as needed to use up the input sequence).
>
> --
> 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
On Clojure http://clj-me.cgrand.net/
Clojure Programming http://clojurebook.com
Training, Consulting & Contracting http://lambdanext.eu/

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to