FYI transients no longer enforce thread locality, and you may now call them from any thread [1]. More options for handling mutable state is not a bad thing (as Clojure is a practical language), though more discipline will be needed.
Jozef [1] CLJ-1498 On Thu, Sep 11, 2014 at 9:41 AM, Arnout Roemers <goo...@company.romeinszoon.nl> wrote: > I can understand why something like a clojure.lang.Volatile can be useful > for some optimizations in the functions of standard library, but do they > really need to become part of the public core API? Clojure is such a nice > language because of the way state is handled at a higher level. Whenever I > use a library, I _know_ the data I'm given is immutable. And whenever I'm > given a state container such as an atom, I _know_ exactly how I can use it > and, more importantly, share it. With a volatile container, I don't[1]. It's > just a plain-old mutable variable, something Clojure rightfully moved away > from. Sure, an API that returns a volatile should be considered a very bad > practice, but I think this is still going to happen[2]. Especially by those > coming to Clojure in the future with a OO background. Understanding and > maintaining someone else's code might become harder as well. > > Having the volatile function as part of the public core API sends the wrong > message in my opinion. Could you, Cognitect, consider making the volatile > related functions private, or move them to their own namespace, in order to > keep Clojure more true to its nature? > > [1] This is also a reason why I think the idea of overloading swap! and > reset! not desirable. > [2] Transients don't have this problem, as they cannot escape their score. > > -- > 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.