looks like a variation of partition-by On 09/14/2016 07:16 PM, Marshall handheld Flax wrote: > This looks like a standard thing you might want to do with a transducer: > accept a stream of inputs and statefully group them into a stream of > varying-length vectors. A typical example might be to accept a series > of bowling throws and emit them grouped into bowling frames. So you > have a generic "vectorTransducer" which is defined by the rule as to > when one frame is full and the next begins. Does such a thing have a > standard name? > > Thanks! > > Marshall > > (defn vectorTransducer [timeForNextVector] > (fn [rf] > (let [pending (volatile! [])] > (fn > ([] (rf)) > ([result] (if (not-empty @pending) > (rf result @pending) > (rf result))) > ([result input] > (let [appended (conj @pending input)] > (if (timeForNextVector appended) > (do (vreset! pending []) > (rf result appended)) > (do (vreset! pending appended) > result)))))))) > > (defn bowlingTransducer[] > (vectorTransducer > (fn ([v] > (or (<= 2 (count v)) > (<= 10 (reduce + v))))))) > > (into [] (bowlingTransducer) > (concat (range 11) (range 11))) > > -- > 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 > <mailto:clojure+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout.
-- And what is good, Phaedrus, And what is not good— Need we ask anyone to tell us these things? -- 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.