I've also struggled with the same concepts in my head in the past.

One answer to try explain why it is not possible, is that if you do
that, you somehow try to conflate identity and state again.

When you write n0: in () out (n1) and n1 in(n0) out() , it seems to me
that when you write n0:in() out(n1) you're thinking about n0 as the
node(identity)+state (value of an identity at a point in time)
conflated, but when you write n1 in(n0) out(), you think about n0 as
the identity.

So in fact, if I try to separate identity and state again, n0 and n1 are refs:
(def n0 (ref nil))
(def n1 (ref {:in [n0], :out []}))
(dosync (ref-set n0 {:in [], :out [n1]}))

Or you could manage by yourself the concept of identity, not
delegating it to clojure's refs, as you said.


2010/7/2 Mate Toth <totm...@gmail.com>:
> I'm building a directed graph library, where the nodes has "out" and
> "in" fields. If I connect a node, let's say:
> (node->node n0 n1)
> then the node's fields would be the following:
>
> n0:
> in: ()
> out: (n1)
>
> n1:
> in: (n0)
> out ()
>
>
> My problem is that if I update n0 I could only add the old "instance"
> to the list, so when I update n1, n0's out field would would contain
> an outdated n1 also..
>
> So n00b head I think it's out of the functional paradigm(or I could
> use node-ids and a hash as a graph, but I don't like it), but how you
> guys would solve this problem? Any workaround?
>
> Thanks for your help! M
>
>
> --
> 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