[Haskell] Re: ANNOUCE: graphviz-2999.10.0.0

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Mon Jul 12 03:28:09 EDT 2010


Something I forgot to mention (yes, I forgot to mention something here
as well as for the fgl announcement):

I sent out an email during the week asking people what they'd prefer in
terms of semantics as a pure Haskell implementation for "dot -Tcanon".
I didn't end up getting around to implementing this yet (as I wanted to
get all these packages out first and I'm still reverse-engineering all
the corner cases dealing with what happens to nodes in a cluster that
has the same name as another cluster), but the infrastructure for doing
so is all there so there may be a 2999.10.1.0 release soon with this
feature.

Ivan Lazar Miljenovic <ivan.miljenovic at gmail.com> writes:

> I'm pleased to announce a new version of my graphviz [1] library that
> provides bindings to the Graphviz [2] suite of tools for visualising
> graphs.
>
> [1]: http://hackage.haskell.org/package/graphviz
> [2]: http://graphviz.org/
>
> Changes in this release:
>
> * I followed my own advice and put in bounds on the version of FGL it
>   used...
>
> * Conversion of FGL-style graphs to `DotRepr` values is now achieved
>   using the new `GraphvizParams` configuration type.  This allows us
>   to define a single parameter that stores all the conversion
>   functions to pass around rather than having to pass around several
>   functions.  This also allows all the non-clustered and clustered
>   functions to be collapsed together, whereas what used to be handled
>   by the primed functions is now achieved by using the
>   `setDirectedness` function.
>
>   There are three default `GraphvizParams` available:
>
>     - `defaultParams` provides some sensible defaults (no attributes
>       or clustering).
>
>     - `nonClusteredParams` is an alias of `defaultParams` where the
>       clustering type is explicitly set to be `()` for cases where you
>       don't want any clustering at all (whereas `defaultParams` allows
>       you to set your own clustering functions).
>
>     - `blankParams` sets all fields to be `undefined`; this is useful
>       for situations where you have functions that will set some
>       values for you and there is no sensible default you can use
>       (mainly for the clustering function).
>
> * Expansion of the `DotRepr` class:
>
>     - More common functions are now defined as methods (`getID`,
>       etc.).
>
>     - The ability to get more information about the structure of the
>       `DotRepr` graph, as well as where all the `DotNode`s are, etc.
>
>     - `graphNodes` now returns `DotNode`s defined only as part of
>       `DotEdge`s, and will also merge duplicate `DotNode`s together.
>
>     - `graphNodes` and `graphEdges` also return `GlobalAttributes`
>       that apply to them.
>
> * The `Point` type now only has one constructor: `Point Double
>   Double`.  The `Int`-only constructor was present due to historical
>   purposes and I thought that the `Pos` value for a `DotNode` would
>   always be a pair of `Int`s; this turns out not to be the case (and
>   accounted for some bugs in older versions of my SourceGraph tool; it's
>   taken me this long to remember to fix this...).
>
> * `SortV` and `PrismOverlap` now only take `Word16` values rather than
>   `Int`s, as they're not meant to allow negative values (the choice of
>   using `Word16` rather than `Word` was arbitrary, and because it's
>   unlikely those values will be large enough to require the larger
>   values available in `Word`).
>
> * `NodeCluster` has been generalised to not have to take an `LNode`
>   for the node type; the type alias `LNodeCluster` is available if you
>   still want this.
>
> * Several documentation typos fixed, including one spotted by Kevin
>   Quick.
>
> * The test-suite now allows running individual tests.
>
> --
> Ivan Lazar Miljenovic
> Ivan.Miljenovic at gmail.com
> IvanMiljenovic.wordpress.com

-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
IvanMiljenovic.wordpress.com


More information about the Haskell mailing list