[Haskell-cafe] Canonical Graphviz code

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Tue Jul 6 18:53:26 EDT 2010


Felipe Lessa <felipe.lessa at gmail.com> writes:

> On Tue, Jul 6, 2010 at 7:15 PM, Ivan Lazar Miljenovic
> <ivan.miljenovic at gmail.com> 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 at gmail.com
IvanMiljenovic.wordpress.com


More information about the Haskell-Cafe mailing list