Abstract
It is often useful to be able to designate a part of a data structure (for example, a subtree of a tree) and operate on it locally. In term algebras, this is modeled using contexts. However, Huet's " zippers ", a dual presentation of contexts, makes it possible to move around a term in an algorithmically efficient way. We'll see how the types of contexts and zippers are systematically obtained from an algebraic type using the same rules as for the derivation of one-variable functions. We'll then make the link between zippers and indexes (" fingers "), a classic algorithmic technique for maintaining pointers within a tree.