uniplate-1.6: Help writing simple, concise and fast generic operations.ContentsIndex
Data.Generics.Uniplate.Zipper
Contents
Create a zipper and get back the value
Navigate within a zipper
Manipulate the zipper hole
Description

A zipper is a structure for walking a value and manipulating it in constant time.

This module was inspired by the paper: Michael D. Adams. Scrap Your Zippers: A Generic Zipper for Heterogeneous Types, Workshop on Generic Programming 2010.

Synopsis
data Zipper from to
zipper :: Uniplate to => to -> Zipper to to
zipperBi :: Biplate from to => from -> Maybe (Zipper from to)
fromZipper :: Zipper from to -> from
left :: Zipper from to -> Maybe (Zipper from to)
right :: Zipper from to -> Maybe (Zipper from to)
up :: Zipper from to -> Maybe (Zipper from to)
down :: Uniplate to => Zipper from to -> Maybe (Zipper from to)
hole :: Zipper from to -> to
replaceHole :: to -> Zipper from to -> Zipper from to
Create a zipper and get back the value
data Zipper from to
Zipper structure, whose root type is the first type argument, and whose focus type is the second type argument.
show/hide Instances
(Eq from, Eq to) => Eq (Zipper from to)
zipper :: Uniplate to => to -> Zipper to to
Create a zipper, focused on the top-left value.
zipperBi :: Biplate from to => from -> Maybe (Zipper from to)
Create a zipper with a different focus type from the outer type. Will return Nothing if there are no instances of the focus type within the original value.
fromZipper :: Zipper from to -> from
From a zipper take the whole structure, including any modifications.
Navigate within a zipper
left :: Zipper from to -> Maybe (Zipper from to)
Move one step left from the current position.
right :: Zipper from to -> Maybe (Zipper from to)
Move one step right from the current position.
up :: Zipper from to -> Maybe (Zipper from to)
Move one step up from the current position.
down :: Uniplate to => Zipper from to -> Maybe (Zipper from to)
Move one step down from the current position.
Manipulate the zipper hole
hole :: Zipper from to -> to
Retrieve the current focus of the zipper..
replaceHole :: to -> Zipper from to -> Zipper from to
Replace the value currently at the focus of the zipper.
Produced by Haddock version 2.7.2