Traversing and transforming abstract syntax trees that involve name binding is
notoriously difficult to do in a correct, concise, modular, customizable
manner. We address this problem in the setting of OCaml, a functional
programming language equipped with powerful object-oriented features. We use
visitor classes as partial, composable descriptions of the operations that we
wish to perform on abstract syntax trees. We introduce "visitors", a simple
type-directed facility for generating visitor classes that have no knowledge
of binding. Separately, we present "alphaLib", a library of small hand-written
visitor classes, each of which knows about a specific binding construct, a
specific representation of names, and/or a specific operation on abstract
syntax trees. By combining these components, a wide range of operations can be
defined. Multiple representations of names can be supported, as well as
conversions between representations. Binding structure can be described either
in a programmatic style, by writing visitor methods, or in a declarative
style, via preprogrammed binding combinators.
Tue 5 SepDisplayed time zone: Belfast change
16:40 - 17:50 | |||
16:40 23mTalk | Compiling to Categories Research Papers Conal Elliott Target, USA DOI | ||
17:03 23mTalk | Visitors Unchained Research Papers François Pottier Inria, France DOI | ||
17:26 23mTalk | Staged Generic Programming Research Papers Jeremy Yallop University of Cambridge, UK DOI Pre-print |