zipper -package:streams -package:traverse-with-class -is:module
Create a zipper, focused on the top-left value.
Construct a
Zipper that can explore anything, and start it at
the
Top.
Not on Stackage, so not searched.
Generic zipper for families of recursive datatypes
Zipper structure, whose root type is the first type argument, and
whose focus type is the second type argument.
This is the type of a
Zipper. It visually resembles a
"breadcrumb trail" as used in website navigation. Each breadcrumb in
the trail represents a level you can move up to.
This type operator associates to the left, so you can use a type like
Top :>> (String,Double) :>> String :>> Char
to represent a
Zipper from
(String,Double) down to
Char that has an
intermediate crumb for the
String containing the
Char.
You can construct a
Zipper into *any* data structure with
zipper.
You can repackage up the contents of a
Zipper with
rezip.
>>> rezip $ zipper 42
42
The combinators in this module provide lot of things you can do to the
Zipper while you have it open.
Note that a value of type
h :> s :> a
doesn't actually contain a value of type
h :> s --
as we descend into a level, the previous level is unpacked and stored
in
Coil form. Only one value of type
_ :> _
exists at any particular time for any particular
Zipper.
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.
differentiate zs xs takes the first
z from
z2
that also belongs to xs
and turns xs
into a stack
with z
being the current element. Acts as
differentiate if zs
and xs@ don't intersect.
Traversal based zippers
Traversal based zippers.
Not on Stackage, so not searched.
Zipper utils that weren't in Control.Comonad.Store.Zipper
Not on Stackage, so not searched.
An implementationg of Attribute Grammars using Functional Zippers
Zipper for rose trees
A zipper consist of the current tree and the branches on the way back
to the root
Conversion of a navigatable rose tree into an ordinary rose tree.
The context, the parts for moving up to the root are just removed from
the tree. So when transforming a navigatable tree by moving around and
by changing some nodes, one has to navigate back to the root, else
that parts are removed from the result
Conversion of a rose tree into a navigatable rose tree
From a zipper take the whole structure, including any modifications.
A text editor zipper library
This library provides a zipper and API for editing text.
Create a zipper using a custom text storage type. Takes the initial
text as well as all of the functions necessary to manipulate the
underlying text values.
Construct a zipper from list values.