




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 depthfirst, lefttoright.

































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 rightmost 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 rightmost child of the current node.


















Silently fails to shift left if there is no leftchild.



Silently fails to shift right if there is no rightchild.



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