 | uniplate-1.6: Help writing simple, concise and fast generic operations. | Contents | Index |
|
| Data.Generics.Uniplate.Zipper |
|
|
|
|
| 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 |
|
|
|
|
| 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.
| Instances | |
|
|
| 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 |