zipper -package:streams -package:elynx-tree package:uniplate
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.
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.
From a zipper take the whole structure, including any modifications.