Functional pearl : weaving a web
Files
Publication date
2001-01-01
Authors
Hinze, R.
Jeuring, J.T.
Editors
Advisors
Supervisors
DOI
Document Type
Preprint
Metadata
Show full item recordCollections
License
Abstract
Suppose, you want to implement a structured editor for some term type, so that
the user can navigate through a given term and perform edit actions on subterms.
In this case you are immediately faced with the problem of how to keep track of
the cursor movements and the user's edits in a reasonably efficient manner. In a
previous pearl G. Huet (1997) introduced a simple data structure, the Zipper, that
addresses this proble - we will explain the Zipper briefly in Sec. 2. A drawback of
the Zipper is that the type of cursor locations depends on the structure of the term
type, that is, each term type gives rise to a different type of locations (unless you
are working in an untyped environment). In this pearl we present an alternative
data structure, the Web, that serves the same purpose but that is parametric in
the underlying term type. Sec. 3-6 are devoted to the new data structure. Before
we unravel the Zipper and explore the Web, let us first give a taste of their use.