-This is a very handy datastructure, and it will become even more handy when we translate it over to more complicated base structures, like trees. To help get a good conceptual grip on how to do that, it's useful to introduce a kind of symbolism for talking about zippers. This is just a metalanguage notation, for us theorists; we don't need our programs to interpret the notation. We'll use a specification like this:
+We had some discussio in seminar of the right way to understand the "zipper" metaphor. In the case of the list zipper, I think it's best to think of the tab of the zipper being here:
+
+ t
+ a
+ b
+ 40;
+ 30; 50;
+ 20; 60;
+ [10; 70;
+ 80;
+ 90]
+
+And imagine that you're just seeing the left half of a real-zipper, rotated 60 degrees counter-clockwise. When the list is all "zipped up", we've "move backwards" to the state where the first element is targetted:
+
+ ([], [10; 20; 30; 40; 50; 60; 70; 80; 90])
+
+However you understand the "zipper" metaphor, this is a very handy datastructure, and it will become even more handy when we translate it over to more complicated base structures, like trees. To help get a good conceptual grip on how to do that, it's useful to introduce a kind of symbolism for talking about zippers. This is just a metalanguage notation, for us theorists; we don't need our programs to interpret the notation. We'll use a specification like this: