| mkTree :: a -> [t a] -> t a |
| tree construction: a new tree is constructed by a node attribute and a list of children
|
|
| mkLeaf :: a -> t a |
leaf construction: leafs don't have any children
definition: mkLeaf n = mkTree n []
|
|
| isLeaf :: t a -> Bool |
| leaf test: list of children empty?
|
|
| isInner :: t a -> Bool |
| innner node test: not . isLeaf
|
|
| getNode :: t a -> a |
| select node attribute
|
|
| getChildren :: t a -> [t a] |
| select children
|
|
| changeNode :: (a -> a) -> t a -> t a |
| edit node attribute
|
|
| changeChildren :: ([t a] -> [t a]) -> t a -> t a |
| edit children
|
|
| setNode :: a -> t a -> t a |
| substitute node: setNode n = changeNode (const n)
|
|
| setChildren :: [t a] -> t a -> t a |
| substitute children: setChildren cl = changeChildren (const cl)
|
|
| foldTree :: (a -> [b] -> b) -> t a -> b |
| fold for trees
|
|
| nodesTree :: t a -> [a] |
| all nodes of a tree
|
|
| depthTree :: t a -> Int |
| depth of a tree
|
|
| cardTree :: t a -> Int |
| number of nodes in a tree
|
|
| formatTree :: (a -> String) -> t a -> String |
format tree for readable trace output
a graphical representation of the tree in text format
|