
Generics.MultiRec.Zipper  Portability  nonportable  Stability  experimental  Maintainer  generics@haskell.org 





Description 
The generic zipper.


Synopsis 




Locations



Abstract type of locations. A location contains the current focus
and its context. A location is parameterized over the family of
datatypes and over the type of the complete value.
 Instances  


Context frames


data family Ctx f :: * > (* > *) > * > *  Source 

Abstract type of context frames. Not required for the highlevel
navigation functions.



Generic zipper class



It is in general not necessary to use the generic navigation
functions directly. The functions listed in the `Interface' section
below are more userfriendly.
  Methods    fill :: phi b > Ctx f b r ix > r b > f r ix  Source 
  first :: (forall b. phi b > r b > Ctx f b r ix > a) > f r ix > Maybe a  Source 
  last :: (forall b. phi b > r b > Ctx f b r ix > a) > f r ix > Maybe a  Source 
  next :: (forall b. phi b > r b > Ctx f b r ix > a) > phi b > Ctx f b r ix > r b > Maybe a  Source 
  prev :: (forall b. phi b > r b > Ctx f b r ix > a) > phi b > Ctx f b r ix > r b > Maybe a  Source 

  Instances  


Interface



Start navigating a datastructure. Returns a location that
focuses the entire value and has an empty context.



Move down to the leftmost child. Returns Nothing if the
current focus is a leaf.



Move down to the rightmost child. Returns Nothing if the
current focus is a leaf.



Move up to the parent. Returns Nothing if the current
focus is the root.



Move to the right sibling. Returns Nothing if the current
focus is the rightmost sibling.



Move to the left sibling. Returns Nothing if the current
focus is the leftmost sibling.



Move through all positions in depthfirst lefttoright order.



Move through all positions in depthfirst righttoleft order.



Return the entire value, independent of the current focus.


on :: (forall xi. phi xi > r xi > a) > Loc phi r ix > a  Source 

Operate on the current focus. This function can be used to
extract the current point of focus.


update :: (forall xi. phi xi > xi > xi) > Loc phi I0 ix > Loc phi I0 ix  Source 

Update the current focus without changing its type.


foldZipper :: (forall xi. phi xi > xi > r xi) > Algebra phi r > Loc phi I0 ix > r ix  Source 

Most general eliminator. Both on and update can be defined
in terms of foldZipper.


Produced by Haddock version 2.4.2 