Hi,
Earlier Stuart Sierra replied as follows:
Hi Patrick,
Here's one way to do it:
(defn new-person [name]
(ref {:name name, :friends #{}}))
(defn are-friends [a b]
(dosync
(commute a assoc :friends (conj (:friends @a) b))
(commute b assoc :friends (conj (:friends @b) a))))
(def bill (new-person "Bill"))
(def bob (new-person "Bob"))
... so I tried the followings:
user=> (defn person [name]
(ref {:name name :friends #{}}))
#'user/person
user=>
(def bill (person "Bill"))
#'user/bill
user=>
(def bob (person "Bob"))
#'user/bob
user=>
(dosync
(commute bill assoc :friends (conj (:friends @bill) bob))
)
{:friends #{#<Ref clojure.lang....@17414c8>}, :name "Bill"}
user=> (:friends @bill)
#{#<Ref clojure.lang....@17414c8>}
Adding another friend for bill
(def beck (person "Becky"))
and
(dosync
(commute bill assoc :friends (conj (:friends @bill) beck))
)
Now I want to print list of names of friends of Bill.
(count (:friends @bill)) returns 2, which is working.
Tried (:name (first (:friends @bill)) but returned nil.
I expected a name gets printed.
thanks in advance.
-sun
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---