zipper -package:streams -package:traverse-with-class -package:zippers -is:package
Create a zipper, focused on the top-left value.
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.
Zipper structure, whose root type is the first type argument, and
whose focus type is the second type argument.
This module provides a two-dimensional text zipper data structure.
This structure represents a body of text and an editing cursor which
can be moved throughout the text, along with a set of editing
transformations.
Text zippers are generalized over the set of data types that might be
used to store lists of characters (e.g.,
String,
Text,
etc.). As a result, the most general way to create a text zipper is to
use
mkZipper and provide all of the functions required to
manipulate the underlying text data.
Implementations using
Text and
String are provided.
Creation date: Thu Jul 23 08:42:37 2020.
Spine-lazy radix tree location manipulation.
Allows lookup and successive insertion without retaining the entirety
of the key in memory.
Spine-strict radix tree location manipulation.
Allows lookup and successive insertion without retaining the entirety
of the key in memory.
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.
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.
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.