Copyright | Copyright (C) 2005 Uwe Schmidt |
---|---|
License | MIT |
Maintainer | Uwe Schmidt (uwe\@fh-wedel.de) |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Interface definition for trees
Synopsis
- class Tree t where
- mkTree :: a -> [t a] -> t a
- mkLeaf :: a -> t a
- isLeaf :: t a -> Bool
- isInner :: t a -> Bool
- getNode :: t a -> a
- getChildren :: t a -> [t a]
- changeNode :: (a -> a) -> t a -> t a
- changeChildren :: ([t a] -> [t a]) -> t a -> t a
- setNode :: a -> t a -> t a
- setChildren :: [t a] -> t a -> t a
- foldTree :: (a -> [b] -> b) -> t a -> b
- nodesTree :: t a -> [a]
- depthTree :: t a -> Int
- cardTree :: t a -> Int
- formatTree :: (a -> String) -> t a -> String
- formatNTree' :: Tree t => (a -> String) -> (String -> String) -> (String -> String) -> t a -> String -> String
Documentation
The interface for trees
mkTree :: a -> [t a] -> t a Source #
tree construction: a new tree is constructed by a node attribute and a list of children
leaf construction: leafs don't have any children
definition: mkLeaf n = mkTree n []
isLeaf :: t a -> Bool Source #
leaf test: list of children empty?
isInner :: t a -> Bool Source #
innner node test: not . isLeaf
select node attribute
getChildren :: t a -> [t a] Source #
select children
changeNode :: (a -> a) -> t a -> t a Source #
edit node attribute
changeChildren :: ([t a] -> [t a]) -> t a -> t a Source #
edit children
setNode :: a -> t a -> t a Source #
substitute node: setNode n = changeNode (const n)
setChildren :: [t a] -> t a -> t a Source #
substitute children: setChildren cl = changeChildren (const cl)
foldTree :: (a -> [b] -> b) -> t a -> b Source #
fold for trees
nodesTree :: t a -> [a] Source #
all nodes of a tree
depthTree :: t a -> Int Source #
depth of a tree
cardTree :: t a -> Int Source #
number of nodes in a tree
formatTree :: (a -> String) -> t a -> String Source #
format tree for readable trace output
a graphical representation of the tree in text format