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