tree-traversals
Version 0.1.3.0 revision 0 uploaded by NoahEasterly.
Package meta
- Synopsis
- Functions and newtype wrappers for traversing Trees
- 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 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
).- Author
- Noah Luck Easterly
- Bug reports
- n/a
- Category
- Data
- Copyright
- n/a
- Homepage
- https://github.com/rampion/tree-traversals
- Maintainer
- noah.easterly@gmail.com
- Package URL
- n/a
- Stability
- n/a