Copyright | (c) Brett Wines 2014 |
---|---|
License | BSD-style |
Maintainer | bgwines@cs.stanford.edu |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell98 |
Deprecated: Use Zora.Graphing.DAGGraphing instead
- DEPRECATED; use
Zora.Graphing.DAGGraphing
instead - 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).
- class TreeGraphable g where
- value :: g a -> a
- get_children :: g a -> [g a]
- is_empty :: g a -> Bool
- graph :: (Show a, Ord a, TreeGraphable g) => g a -> IO String
Documentation
class TreeGraphable g where Source
A typeclass for 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)
Gets the value contained in a node. For example,
value (Empty) = error "Empty nodes don't contain values." value (Leaf x) = x value (Node x _ _) = x
get_children :: g a -> [g a] Source
Gets the children of the current node. For example,
get_children (Empty) = error "Empty nodes don't have children." get_children (Leaf _) = [] get_children (Node _ l r) = [l, r]
is_empty :: g a -> Bool Source
Returns whether a node is empty. Sometimes, when declaring algebraic data types, it is desirable to have an "Empty" value constructor. If your data type does not have an "Empty" value constructor, just always return False
.
is_empty Empty = True is_empty _ = False