hxt-9.3.1.1: A collection of tools for processing XML with Haskell.

Portability | portable
Stability | experimental
Maintainer | Uwe Schmidt (uwe\@fh-wedel.de)
Safe Haskell | Safe-Inferred

Data.Tree.Class

Description

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

class Tree t where

The interface for trees

Methods

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

Instances

Tree NTree | Implementation of Data.Tree.Class interface for rose trees
Tree NTZipper |

formatNTree' :: Tree t => (a -> String) -> (String -> String) -> (String -> String) -> t a -> String -> String

convert a tree into a pseudo graphical string representation