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