On Tue, Aug 4, 2009 at 1:06 PM, Howard Lewis Ship<hls...@gmail.com> wrote:
>
> On Tue, Aug 4, 2009 at 10:03 AM, Rich Hickey<richhic...@gmail.com> wrote:
>>
>>
>>
>> On Aug 4, 12:35 pm, Howard Lewis Ship <hls...@gmail.com> wrote:
>>> These aren't criticisms, just trying to understand this better.
>>>
>>> So assoc! etc. return a new instance of the transient?
>>
>> They return the next value of the transient.
>>
>>> Or do they
>>> return the same transient?
>>
>> I'm not promising that they do.
>>
>>>  If they return a new instance, what
>>> exactly is the advantage (though, obviously there is one, from the
>>> transcript).
>>
>> Right.
>>
>>> If they return the same instance do you prevent the
>>> calling code from invoking further changes or not?
>>>
>>
>> This one I don't understand, you can use the return value, don't reuse
>> the argument. If your code is structured functionally and non-
>> persistently that is how it will be anyway.
>>
>>> I like the idea of restricting the transient to just the originating thread.
>>>
>>> Does this mean we'll need a reduce!
>>
>> No, reduce farms out the work to the reducing function and doesn't
>> create a composite data structure itself. The reducing fn might use a
>> transient but that's an implementation detail of it.
>>
>>> and map!, etc?
>>
>> No, map returns a sequence.
>>
>>> Would there be an
>>> advantage to those? Is there an intersection (or potential danger)
>>> between transient structures and laziness?
>>>
>>
>> Transient data structures should never be part of the public interface
>> of anything. They are just an implementation detail, an optimization,
>> e.g. into/vec/vector now use transients, but aren't now into!/vec!/
>> vector! - the transients are inside.
>>
>> Hope that helps,
>>
>> Rich
>
>
> It does, pretty much what I expected. Care to summarize why they are
> so much faster than persistent types (for those of us too lazy/busy to
> read the source)?
>

Fully persistent modifications require full path copies, while
transient modifications copy nodes as needed, and once a copy has been
made, subsequent modifications affecting that node can be made in
place.

Rich

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