Yes, and it happens for most collections. Vectors, maps, etc. There's even a fast path for reduce-kv on maps that doesn't create key value entry objects.
Timothy On Fri, Apr 29, 2016 at 6:06 PM, Mark Engelberg <mark.engelb...@gmail.com> wrote: > So you're saying that this is an optimization that is automatically called > when you invoke Clojure's standard reduce function on something like a > vector? > > > On Fri, Apr 29, 2016 at 1:14 PM, Alex Miller <a...@puredanger.com> wrote: > >> The main internal protocol is really CollReduce for collections that can >> reduce themselves. InternalReduce is for concrete seq implementations that >> can reduce themselves. >> >> For cases where you are creating new things, you can also plug in a >> little more easily by implementing the IReduceInit (reduce with an init >> value) or IReduce (extends IReduceInit for the case where an init value is >> not supplied) Java interfaces. I would generally prefer these if you are >> creating a new thing. >> >> >> On Friday, April 29, 2016 at 2:41:10 PM UTC-5, Camilo Roca wrote: >>> >>> puzzler, >>> No, Clojure actually has quite a lot of protocols for reducing "things". >>> But they are so many that I got lost in which does what and how, so I >>> wanted a clarification on the subject. >>> >>> Alex miller, excellent answer already gave me some overview of the topic. >>> >>> Here is a link to Clojure's protocols for reduce: >>> https://github.com/clojure/clojure/blob/master/src/clj/clojure/core/protocols.clj >>> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fclojure%2Fclojure%2Fblob%2Fmaster%2Fsrc%2Fclj%2Fclojure%2Fcore%2Fprotocols.clj&sa=D&sntz=1&usg=AFQjCNEw9QmBOeBqHioMJEhGeBYF_N2gTA> >>> >>> El viernes, 29 de abril de 2016, 21:17:42 (UTC+2), puzzler escribió: >>>> >>>> By "internal reduce", are you all talking about the Clojure reducers >>>> library, or something else? >>>> >>>> -- >> 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. >> > > -- > 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. > -- “One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.” (Robert Firth) -- 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.