|
|
|
|
|
Description |
A zipper for Data.Tree.
|
|
Synopsis |
|
|
|
|
Functional zipper
|
|
These are the core zipper functions.
|
|
|
|
|
|
|
|
|
:: | | => w -> v -> w | transforms a node v using the accumulated
value w from the root of the tree to v
| -> w | the initial value of the accumulator at the root
| -> Tree v | | -> Tree w | |
|
|
|
Similar to dfsFold, but the transformation is done in the monad m. The
sequence of operations is depth-first, left-to-right.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Traverses to the top of the tree.
up.top = undefined
top.top = top
|
|
|
|
|
|
|
|
|
|
Imperative tree construction
|
|
A state monad that carries a zipper. It provides convenient methods to
imperatively create and update a tree.
The state monad's set method may be used to arbitrarily update the current
location. However, such updates can break the behavior of nest and
withCurrentChild. We recommend avoiding StateT.set.
|
|
|
|
|
:: Monad m | | => v | value of the new right-most child
| -> ZipperT v m a | computation applied to the new child
| -> ZipperT v m a | returns the result of the nested computation
| Creates a new node as the right-most child of the current node.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Silently fails to shift left if there is no left-child.
|
|
|
Silently fails to shift right if there is no right-child.
|
|
|
:: Monad m | | => ZipperT v m a | computation to apply to the current child
| -> ZipperT v m a | returns the result of the nested
computation
|
|
|
Produced by Haddock version 2.3.0 |