Copyright | (c) The University of Glasgow 2002 |
---|---|

License | BSD-style (see the file libraries/base/LICENSE) |

Maintainer | libraries@haskell.org |

Portability | portable |

Safe Haskell | Trustworthy |

Language | Haskell98 |

Multi-way trees (*aka* rose trees) and forests.

- data Tree a = Node {}
- type Forest a = [Tree a]
- drawTree :: Tree String -> String
- drawForest :: Forest String -> String
- flatten :: Tree a -> [a]
- levels :: Tree a -> [[a]]
- foldTree :: (a -> [b] -> b) -> Tree a -> b
- 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

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

Monad Tree # | |

Functor Tree # | |

Applicative Tree # | |

Foldable Tree # | |

Traversable Tree # | |

Eq1 Tree # | |

Ord1 Tree # | |

Read1 Tree # | |

Show1 Tree # | |

MonadZip Tree # | |

Eq a => Eq (Tree a) # | |

Data a => Data (Tree a) # | |

Read a => Read (Tree a) # | |

Show a => Show (Tree a) # | |

Generic (Tree a) # | |

NFData a => NFData (Tree a) # | |

Generic1 * Tree # | |

type Rep (Tree a) # | |

type Rep1 * Tree # | |

# Two-dimensional drawing

drawForest :: Forest String -> String #

Neat 2-dimensional drawing of a forest.

# Extraction

# Building trees

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

Build a tree from a seed value

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

Build a forest from a list of seed values

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

Monadic tree builder, in depth-first order

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

Monadic forest builder, in depth-first order

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

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) #

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*.