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
|