On 14 Dec 2012, at 13:52, Rich Hickey <richhic...@gmail.com> wrote: > On Dec 14, 2012, at 12:55 AM, Paul Butcher wrote: >> Rich - what is the "soundbite description" of Clojure's concurrency model >> you're happiest with? > > Ah, soundbites, the foundation of modern programmer education :)
Maybe I should have said "least unhappy"? :-) > Certainly, pigeonholing Clojure as STM-based is way off the mark. Agreed 100%. > Also, a chapter on STM that doesn't distinguish Clojure and Haskell's > functional STM approach from the ordinary "wrap your old imperative code in > transactions" approach is going to miss the biggest point. Also agreed 100%. That's a (very) large part of why I've chosen Clojure as the language for this chapter. > I guess this would be my alternative chapter title proposal: > > Functional Programming + Reference Types I can see that logic. Unfortunately, as well as this chapter, I also plan to have a chapter on functional programming using Haskell's Par and Eval monads, so I need some kind of title that draws the distinction. I know that there are similarities between the approaches, but they also have very distinct flavours (as you say in your "The Database as a Value" talk, it's thoroughly unclear how to represent an immutable value that performs IO as a monad). For the avoidance of doubt, I don't for one second disagree that Clojure is more than STM. Nor do I disagree that it's important that I cover the separation of values from identity, atoms and agents as well as refs/STM. I'm just trying to come up with a pithy chapter title. How about "transactional state"? "Immutable state"? -- paul.butcher->msgCount++ Snetterton, Castle Combe, Cadwell Park... Who says I have a one track mind? http://www.paulbutcher.com/ LinkedIn: http://www.linkedin.com/in/paulbutcher MSN: p...@paulbutcher.com AIM: paulrabutcher Skype: paulrabutcher On 14 Dec 2012, at 13:52, Rich Hickey <richhic...@gmail.com> wrote: > > On Dec 14, 2012, at 12:55 AM, Paul Butcher wrote: > >> On 14 Dec 2012, at 00:30, kovas boguta <kovas.bog...@gmail.com> wrote: >> >>> My recommendation is either "Persistent Datastructures" or "Database as a >>> Value" >> >> Interesting. I'd be interested to hear others thoughts on this. In >> particular Rich's >> >> Rich - what is the "soundbite description" of Clojure's concurrency model >> you're happiest with? > > Ah, soundbites, the foundation of modern programmer education :) > > How about this: > > "Clojure doesn't need a concurrency model. It has a state model that can be > realized in multiple concurrency-safe ways." > > For the state model: > > "Separate identities and values" > > The best thing about Clojure's reference types is that they exist. The best > thing about Clojure is that you rarely need them. Certainly, pigeonholing > Clojure as STM-based is way off the mark. > > Also, a chapter on STM that doesn't distinguish Clojure and Haskell's > functional STM approach from the ordinary "wrap your old imperative code in > transactions" approach is going to miss the biggest point. People reading a > chapter on the 'STM model' independent of the functional approach of the > languages in which it has succeeded are bound to be disappointed and > ill-informed. > > I'd argue that the 'concurrency model' of Clojure and Haskell is 'functional > programming' + reference types. Their STMs are a subset of that. As Kovas has > pointed out, the symbiosis of persistent data structures and this reference > approach is fundamental. > > I guess this would be my alternative chapter title proposal: > > Functional Programming + Reference Types > > 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 -- 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