| containers-0.2.0.1: Assorted concrete container types | Source code | Contents | Index

Data.Tree

Portability | portable
Stability | experimental
Maintainer | libraries@haskell.org

Contents

Two-dimensional drawing
Extraction
Building trees

Description
Multi-way trees (aka rose trees) and forests.
Synopsis

data Tree a = Node {

rootLabel :: a
subForest :: Forest a

}

type Forest a = [Tree a]
drawTree :: Tree String -> String
drawForest :: Forest String -> String
flatten :: Tree a -> [a]
levels :: Tree a -> [[a]]
unfoldTree :: (b -> (a, [b])) -> b -> Tree a
unfoldForest :: (b -> (a, [b])) -> [b] -> Forest a
unfoldTreeM :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a)
unfoldForestM :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)
unfoldTreeM_BF :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a)
unfoldForestM_BF :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a)

Documentation

data Tree a | Source

Multi-way trees, also known as rose trees.
Constructors

Node |

rootLabel :: a | label value
subForest :: Forest a | zero or more child trees

Instances

Monad Tree
Functor Tree
Typeable1 Tree
Traversable Tree
Foldable Tree
Applicative Tree
Eq a => Eq (Tree a)
Data a => Data (Tree a)
Read a => Read (Tree a)
Show a => Show (Tree a)

type Forest a = [Tree a] | Source

Two-dimensional drawing

drawTree :: Tree String -> String | Source

Neat 2-dimensional drawing of a tree.

drawForest :: Forest String -> String | Source

Neat 2-dimensional drawing of a forest.
Extraction

flatten :: Tree a -> [a] | Source

The elements of a tree in pre-order.

levels :: Tree a -> [[a]] | Source

Lists of nodes at each level of the tree.
Building trees

unfoldTree :: (b -> (a, [b])) -> b -> Tree a | Source

Build a tree from a seed value

unfoldForest :: (b -> (a, [b])) -> [b] -> Forest a | Source

Build a forest from a list of seed values

unfoldTreeM :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a) | Source

Monadic tree builder, in depth-first order

unfoldForestM :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a) | Source

Monadic forest builder, in depth-first order

unfoldTreeM_BF :: Monad m => (b -> m (a, [b])) -> b -> m (Tree a) | Source

Monadic tree builder, in breadth-first order, using an algorithm adapted from Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design, by Chris Okasaki, ICFP'00.

unfoldForestM_BF :: Monad m => (b -> m (a, [b])) -> [b] -> m (Forest a) | Source

Monadic forest builder, in breadth-first order, using an algorithm adapted from Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design, by Chris Okasaki, ICFP'00.
Produced by Haddock version 2.4.2