Module Data.Tree

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

Module
Data.Tree
Copyright
(c) The University of Glasgow 2002
License
BSD-style (see the file libraries/base/LICENSE)

This is a port of Haskell library code.

Imports

Table of Content

Definitions

data Tree a

Multi-way trees, also known as rose trees.

Constructors

Node {rootLabel ∷ a, subForest ∷ Forest a}

Member Functions

rootLabelTree 𝖆 → 𝖆

access field rootLabel

subForestTree 𝖆Forest 𝖆

label value zero or more child trees

type Forest a = [Tree a]
drawTreeTree StringString

Neat 2-dimensional drawing of a tree.

drawForestForest StringString

Neat 2-dimensional drawing of a forest.

drawTree String → [String]
flattenTree a → [a]

The elements of a tree in pre-order.

levelsTree a → [[a]]

Lists of nodes at each level of the tree.

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

unfoldTreeMMonad m ⇒ (b → m (a, [b])) → b → m (Tree a)

Monadic tree builder, in depth-first order

unfoldForestMMonad m ⇒ (b → m (a, [b])) → [b] → m (Forest a)

Monadic forest builder, in depth-first order

Instances

instance Applicative Tree

Member Functions

*>Tree 𝖆Tree 𝖇Tree 𝖇
infixl  4

inherited from Applicative.*>

<*Tree 𝖆Tree 𝖇Tree 𝖆
infixl  4

inherited from Applicative.<*

<*>Tree (𝖆→𝖇)Tree 𝖆Tree 𝖇
infixl  4
pure ∷ 𝖆 → Tree 𝖆
instance Eq a ⇒ Eq (Tree a)

Member Functions

!=Eq 𝖆 ⇒ Tree 𝖆Tree 𝖆Bool
infix  7

inherited from Eq.!=

==Eq 𝖆 ⇒ Tree 𝖆Tree 𝖆Bool
infix  7

Function generated for derived instance.

hashCodeEq 𝖆 ⇒ Tree 𝖆Int

Function generated for derived instance.

instance Foldable Tree

Member Functions

foldMonoid 𝖆 ⇒ Tree 𝖆 → 𝖆

inherited from Foldable.fold

fold1Semigroup 𝖆 ⇒ Tree 𝖆 → 𝖆

inherited from Foldable.fold1

foldMapMonoid 𝖇 ⇒ (𝖆 → 𝖇) → Tree 𝖆 → 𝖇
foldMap1Semigroup 𝖇 ⇒ (𝖆 → 𝖇) → Tree 𝖆 → 𝖇

inherited from Foldable.foldMap1

foldl ∷ (𝖆 → 𝖇 → 𝖆) → 𝖆 → Tree 𝖇 → 𝖆

inherited from Foldable.foldl

foldl1 ∷ (𝖆 → 𝖆 → 𝖆) → Tree 𝖆 → 𝖆

inherited from Foldable.foldl1

foldr ∷ (𝖆 → 𝖇 → 𝖇) → 𝖇 → Tree 𝖆 → 𝖇

inherited from Foldable.foldr

foldr1 ∷ (𝖆 → 𝖆 → 𝖆) → Tree 𝖆 → 𝖆

inherited from Foldable.foldr1

instance Functor Tree

Member Functions

fmap ∷ (𝖆 → 𝖇) → Tree 𝖆Tree 𝖇
infixl  4
instance Monad Tree

Member Functions

>>Tree 𝖆Tree 𝖇 → Tree 𝖇
infixl  3

inherited from Monad.>>

>>=Tree 𝖆 → (𝖆 → Tree 𝖇) → Tree 𝖇
infixl  3
joinTree (Tree 𝖆)Tree 𝖆

inherited from Monad.join

pure ∷ 𝖆 → Tree 𝖆
instance Show a ⇒ Show (Tree a)

Member Functions

displayShow 𝖆 ⇒ Tree 𝖆String

inherited from Show.display

showShow 𝖆 ⇒ Tree 𝖆String

Function generated for derived instance.

showCharsShow 𝖆 ⇒ Tree 𝖆 → [Char]

inherited from Show.showChars

showListShow 𝖆 ⇒ Forest 𝖆StringString

inherited from Show.showList

showsPrecShow 𝖆 ⇒ IntTree 𝖆StringString

inherited from Show.showsPrec

showsubShow 𝖆 ⇒ Tree 𝖆String

Function generated for derived instance.

instance Traversable Tree

Member Functions

mapMMonad 𝖈 ⇒ (𝖆 → 𝖈 𝖇) → Tree 𝖆 → 𝖈 (Tree 𝖇)

inherited from Traversable.mapM

sequenceMonad 𝖇 ⇒ Tree (𝖇 𝖆) → 𝖇 (Tree 𝖆)

inherited from Traversable.sequence

sequenceAApplicative 𝖇 ⇒ Tree (𝖇 𝖆) → 𝖇 (Tree 𝖆)

inherited from Traversable.sequenceA

traverseApplicative 𝖈 ⇒ (𝖆 → 𝖈 𝖇) → Tree 𝖆 → 𝖈 (Tree 𝖇)

Functions and Values by Type

Tree StringString

drawTree

Tree String → [String]

draw

Forest StringString

drawForest

(𝖆 → 𝖆 → 𝖆) → Tree 𝖆 → 𝖆

Foldable_Tree.foldr1, Foldable_Tree.foldl1

Tree (Tree 𝖆) → Tree 𝖆

Monad_Tree.join

Tree a → [[a]]

levels

Tree a → [a]

flatten

Tree 𝖆 → (Forest 𝖆→Forest 𝖆) → Tree 𝖆

Tree.chg$subForest

Tree 𝖆 → (𝖆→𝖆) → Tree 𝖆

Tree.chg$rootLabel

Tree 𝖆 → Forest 𝖆 → Tree 𝖆

Tree.upd$subForest

Tree 𝖆 → 𝖆 → Tree 𝖆

Tree.upd$rootLabel

Tree 𝖆 → Forest 𝖆

Tree.subForest

Tree 𝖆 → 𝖆

Tree.rootLabel

a → Forest a → Tree a

Tree.Node

𝖆 → Tree 𝖆

Applicative_Tree.pure, Monad_Tree.pure

𝖆 → Bool

Tree.has$rootLabel, Tree.has$subForest

Monoid 𝖆 ⇒ Tree 𝖆 → 𝖆

Foldable_Tree.fold

Semigroup 𝖆 ⇒ Tree 𝖆 → 𝖆

Foldable_Tree.fold1

Eq 𝖆 ⇒ Tree 𝖆 → Tree 𝖆 → Bool

Eq_Tree.!=, Eq_Tree.==

Eq 𝖆 ⇒ Tree 𝖆 → Int

Eq_Tree.hashCode

Show 𝖆 ⇒ Tree 𝖆 → String

Show_Tree.showsub, Show_Tree.display, Show_Tree.show

Show 𝖆 ⇒ Tree 𝖆 → [Char]

Show_Tree.showChars

Show 𝖆 ⇒ Forest 𝖆 → StringString

Show_Tree.showList

Show 𝖆 ⇒ IntTree 𝖆 → StringString

Show_Tree.showsPrec

(b → (a, [b])) → [b] → Forest a

unfoldForest

(b → (a, [b])) → b → Tree a

unfoldTree

(𝖆 → 𝖇 → 𝖆) → 𝖆 → Tree 𝖇 → 𝖆

Foldable_Tree.foldl

(𝖆 → 𝖇 → 𝖇) → 𝖇 → Tree 𝖆 → 𝖇

Foldable_Tree.foldr

(𝖆 → 𝖇) → Tree 𝖆 → Tree 𝖇

Functor_Tree.fmap

Tree (𝖆→𝖇) → Tree 𝖆 → Tree 𝖇

Applicative_Tree.<*>

Tree 𝖆 → (𝖆 → Tree 𝖇) → Tree 𝖇

Monad_Tree.>>=

Tree 𝖆 → Tree 𝖇 → Tree 𝖆

Applicative_Tree.<*

Tree 𝖆 → Tree 𝖇 → Tree 𝖇

Applicative_Tree.*>, Monad_Tree.>>

Monoid 𝖇 ⇒ (𝖆 → 𝖇) → Tree 𝖆 → 𝖇

Foldable_Tree.foldMap

Semigroup 𝖇 ⇒ (𝖆 → 𝖇) → Tree 𝖆 → 𝖇

Foldable_Tree.foldMap1

Applicative 𝖇 ⇒ Tree (𝖇 𝖆) → 𝖇 (Tree 𝖆)

Traversable_Tree.sequenceA

Monad 𝖇 ⇒ Tree (𝖇 𝖆) → 𝖇 (Tree 𝖆)

Traversable_Tree.sequence

Applicative 𝖈 ⇒ (𝖆 → 𝖈 𝖇) → Tree 𝖆 → 𝖈 (Tree 𝖇)

Traversable_Tree.traverse

Monad m ⇒ (b → m (a, [b])) → [b] → m (Forest a)

unfoldForestM

Monad m ⇒ (b → m (a, [b])) → b → m (Tree a)

unfoldTreeM

Monad 𝖈 ⇒ (𝖆 → 𝖈 𝖇) → Tree 𝖆 → 𝖈 (Tree 𝖇)

Traversable_Tree.mapM

Valid HTML 4.01 Strict