A zipper gives one fast local modifications and navigations through an arbitrary immutable hierarchical data structure. Modifications also share as much structure as possible with the original version of the structure, making zippers memory efficient ways of editing a structure.