On Dec 29, 8:08 pm, "Mark Engelberg" <mark.engelb...@gmail.com> wrote:
> On Mon, Dec 29, 2008 at 12:40 PM, Rich Hickey <richhic...@gmail.com> wrote:
> > People who know what they are doing can do these things right now with
> > Clojure's array support. There really isn't any more value for Clojure
> > to add to that, so no special primitives. I fully accept the necessity
> > of doing that at times, and the correctness of internally mutating,
> > but externally referentially transparent functions, and Clojure has
> > several of them. That's one of the reasons Clojure isn't 'pure'. OTOH
> > it's not a good argument for mutable local vars. What other "unsafe
> > things" are you looking for?
>
> After giving this some more thought, I think the absolutely simplest
> way to further improve Clojure's mutability support would be to add an
> atom-set function for the cases where you really want to clobber the
> contents of atom and don't care what the contents already are.  This
> takes the "variable which needs no synchronization" thing one step
> further, allowing for fastest speed in those situations.
>
> The semantics would be like this:
> (defn atom-set [a val]
>   (swap! a (constantly val)))
>
> But presumably it could be implemented in the Clojure core in a way
> that is even faster than the above implementation, since it doesn't
> need to do the check that the contents haven't changed before setting.
>  I think this is consistent with the idea of atom as a power-user's
> tool for getting the best possible performance when synchronization is
> not required.

Could you provide an example of when you would need/use that?

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