Portability | portable |
---|---|
Stability | experimental |
Maintainer | bgwines@cs.stanford.edu |
Safe Haskell | None |
A typeclass with default implementation for graphing trees with Haskell GraphViz. It is intended to be extremely straightforward to graph your data type; you only need to define three very simple functions (example implementations below).
Documentation
class DAGGraphable g whereSource
A typeclass for tree-like algebraic data types that are able to be graphed.
For these descriptions, assume the following example data type:
data Tree a = Empty | Leaf a | Node a (Tree a) (Tree a)
graph :: (Eq g, Show g, DAGGraphable g) => g -> IO StringSource
Graphs the given DAGGraphable
data type. Output is written to a file named "graph-i.dot", where i is the successor of the highest i-show_node of all existing "graph-i.dot" files in the current directory.You won't need to override this implementation.
zoldMap :: (Monoid m, DAGGraphable g) => (g -> m) -> g -> mSource
A default implementation of zoldMap
-- being instance of DAGGraphable
is enough to make your data type an instance of Zoldable
(in Zora.Types
). You shouldn't need to override this implementation; just define
instance Zoldable Tree where zoldMap :: (Monoid m) => (Tree a -> m) -> Tree a -> m zoldMap = G.zoldMap