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

CopyrightCopyright (C) 2005 Uwe Schmidt
LicenseMIT
MaintainerUwe Schmidt (uwe\@fh-wedel.de)
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Data.Tree.Class

Description

Interface definition for trees

Synopsis

Documentation

class Tree t where Source #

The interface for trees

Methods

mkTree :: a -> [t a] -> t a Source #

tree construction: a new tree is constructed by a node attribute and a list of children

mkLeaf :: a -> t a Source #

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

getNode :: t a -> a Source #

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

Instances

Tree NTree Source #

Implementation of Data.Tree.Class interface for rose trees

Methods

mkTree :: a -> [NTree a] -> NTree a Source #

mkLeaf :: a -> NTree a Source #

isLeaf :: NTree a -> Bool Source #

isInner :: NTree a -> Bool Source #

getNode :: NTree a -> a Source #

getChildren :: NTree a -> [NTree a] Source #

changeNode :: (a -> a) -> NTree a -> NTree a Source #

changeChildren :: ([NTree a] -> [NTree a]) -> NTree a -> NTree a Source #

setNode :: a -> NTree a -> NTree a Source #

setChildren :: [NTree a] -> NTree a -> NTree a Source #

foldTree :: (a -> [b] -> b) -> NTree a -> b Source #

nodesTree :: NTree a -> [a] Source #

depthTree :: NTree a -> Int Source #

cardTree :: NTree a -> Int Source #

formatTree :: (a -> String) -> NTree a -> String Source #

Tree NTZipper Source # 

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

convert a tree into a pseudo graphical string representation