
Felipe Lessa
On Tue, Jul 6, 2010 at 7:15 PM, Ivan Lazar Miljenovic
wrote: As such, I probably won't be implementing the canonical form stuff any time soon in graphviz, and might need to examine Graphviz's source code to compare it and ensure that it's at least similar :s
I'm sorry for being silly, but what's the motivation of having this canonic form? =)
A few things come to mind: * Easier to reason about, as the various items of different types (global attributes, subgraphs/clusters, nodes and edges) are grouped together rather than being all mixed up; compare the layout of Data.GraphViz.Types.DotGraph to Data.GraphViz.Types.Generalised.GDotGraph. * A non-canonical graph can have the same node specified several times with different attributes; in the canonical form they are all merged into one (see the `a' node in the examples in my original email). * Less ambiguity: in the email I just sent out, I had a graph which I expected `a' to be outside the box and `b' to be inside it; the canonical representation of this explicitly puts both of them inside the cluster such that that ambiguity is no longer present. -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com