On Jun 16, 3:08 pm, Colin Yates <colin.ya...@gmail.com> wrote:
> (newbie warning)
>
> Our current solution is an OO implementation in Groovy and Java.  We
> have a (mutable) Project which has a DAG (directed acyclic graph).
> This is stored as a set of nodes and edges.  There are multiple
> implementations of nodes (which may themselves be Projects).  There
> are also multiple implementations of edges.
>
> My question isn't how to do this in a functional paradigm, my first
> question is *how do I learn* to do this in a functional paradigm.  I
> want to be able to get the answer myself ;).  To that end, are there
> any "domain driven design with functional programming" type resources?
>
> A more specific question is how do I model a graph?  These graphs can
> be quite extensive, with mutations on the individual nodes as well as
> the structure (i.e. adding or removing branches).  Does this mean that
> every every node would be a ref?  I think the general answer is that
> the aggregate roots are refs, meaning they are an atomic block, but is
> there any more guidance?

May I humbly suggest that this ought to be a database-ish concern
rather than a middleware one? have you looked at neo4j for example? A
quick google found this:

http://wiki.neo4j.org/content/Roles

"This is an implementation of an example found in the article A Model
to Represent Directed Acyclic Graphs (DAG) on SQL Databases by Kemal
Erdogan. ... In Neo4j storing the roles is trivial, as working with
graphs is what Neo4j was designed for"

I would humbly suggest that you use as much of the database
functionality as possible for your data needs and avoid replicating it
in your middleware. I hope this works. :-)

-- 
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