Skip to Main content Skip to Navigation
Journal articles

Visitors unchained

Abstract : 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 handwritten 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.
Document type :
Journal articles
Complete list of metadata

Cited literature [41 references]  Display  Hide  Download
Contributor : François Pottier Connect in order to contact the contributor
Submitted on : Thursday, December 21, 2017 - 3:59:49 PM
Last modification on : Monday, July 25, 2022 - 3:44:21 AM


Files produced by the author(s)



François Pottier. Visitors unchained. Proceedings of the ACM on Programming Languages, ACM, 2017, 1 (ICFP), pp.1 - 28. ⟨10.1145/3110272⟩. ⟨hal-01670735⟩



Record views


Files downloads