tree-traversals: Functions and newtype wrappers for traversing Trees

[ data, library ] [ Propose Tags ]

The tree-traversals package defines in-order, pre-order, post-order, level-order, and reversed level-order traversals for tree-like types:

inorder, preorder, postorder, levelorder, rlevelorder
  :: (TreeLike tree, Applicative f) => (a -> f b) -> tree a -> f (tree b)

The package also provides newtype wrappers for the various traversals so they may be used with traverse, i.e.

traverse f (InOrder tree) = inorder f tree
traverse f (PreOrder tree) = preorder f tree
traverse f (PostOrder tree) = postorder f tree
traverse f (LevelOrder tree) = levelorder f tree
traverse f (RLevelOrder tree) = rlevelorder f tree

To implement the various orders, the tree-traversals package provides the Control.Applicative.Phases.Phases applicative transformer for organizing effects into distinct phases.

Instances of Data.Traversable.TreeLike.TreeLike are provided for rose trees (Data.Tree.Tree), binary trees (Data.BinaryTree.BinaryTree), forests (Data.Traversable.TreeLike.Forest), and algebraic combinations of trees (Data.Functor.Compose.Compose outerTree innerTree, Data.Functor.Product fstTree sndTree, Data.Functor.Sum leftTree rightTree).


[Skip to Readme]
Versions 0.1.0.0
Change log ChangeLog.md
Dependencies base (==4.10.*), containers (<0.6.0.0) [details]
License CC0-1.0
Author Noah Luck Easterly
Maintainer noah.easterly@gmail.com
Category Data
Home page https://github.com/rampion/tree-traversals
Source repo head: git clone git://github.com/rampion/tree-traversals.git
this: git clone git://github.com/rampion/tree-traversals.git(tag v0.1.0.0)
Uploaded by NoahEasterly at Wed Mar 28 18:26:40 UTC 2018
Distributions NixOS:0.1.0.0
Downloads 47 total (2 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user [build log]
All reported builds failed as of 2018-03-28 [all 2 reports]
Hackage Matrix CI

Modules

[Index]

Flags

NameDescriptionDefaultType
development

Enable all warnings and upgrade warnings to errors

DisabledManual

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for tree-traversals-0.1.0.0

[back to package description]

The tree-traversals package defines in-order, pre-order, post-order, level-order, and reversed level-order traversals for tree-like types:

inorder, preorder, postorder, levelorder, rlevelorder
  :: (TreeLike tree, Applicative f) => (a -> f b) -> tree a -> f (tree b) 

The package also provides newtype wrappers for the various traversals so they may be used with traverse, i.e.

traverse f (InOrder tree) = inorder f tree
traverse f (PreOrder tree) = preorder f tree
traverse f (PostOrder tree) = postorder f tree
traverse f (LevelOrder tree) = levelorder f tree
traverse f (RLevelOrder tree) = rlevelorder f tree

To implement the various orders, the tree-traversals package provides the Phases applicative transformer for organizing effects into distinct phases.

Instances of TreeLike are provided for rose trees (Tree from Data.Tree), binary trees (BinaryTree from this package's Data.BinaryTree), forests (Forest from this package's Data.Traversable.TreeLike), and algebraic combinations of trees (Compose outerTree innerTree, Product fstTree sndTree, Sum leftTree rightTree).