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.

Reply via email to