"So I have this question. I have heard that Clojure's data structures
are immutable and it has support for promises, agents, atoms etc."

It's not that clojure's data structures support promises, agents ...
It's more like promises, agents ... support clojure's data structures.

"Changing" something in an agent doesn't actually change the data itself, it
only changes where the agent "points", so to speak.
For example:
(def a 3)
(def b (agent a))
(send b inc)
a => 3 ; a is never changed!
@b => 4 ; instead, a new value is created, which b now points to.

Atom source:
https://github.com/richhickey/clojure/blob/master/src/jvm/clojure/lang/Atom.java

About STM:
http://java.ociweb.com/mark/stm/article.html#PersistentDataStructures

On Thu, Apr 28, 2011 at 11:20 AM, MohanR <radhakrishnan.mo...@gmail.com>wrote:

> The problem was elsewhere but I realized that Clojure has support for
> futures at the level of the language even though it relies on
> java.util.concurrent.
>
> So I have this question. I have heard that Clojure's data structures
> are immutable and it has support for promises, agents, atoms etc.
>
> What exactly is meant by this ? Is it that all of these Clojure
> language featues are based on java.util.concurrent ?
>
> I am still learning FP and Clojure but I want to know if I am assuming
> something totally wrong here. All of these language featues seem to
> depend on java.util.concurrent.
>
> What about STM ? Is that a new idea based on the same Java library ?
>
> --
> 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

Reply via email to