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 metadatas

Cited literature [41 references]  Display  Hide  Download

https://hal.inria.fr/hal-01670735
Contributor : François Pottier <>
Submitted on : Thursday, December 21, 2017 - 3:59:49 PM
Last modification on : Thursday, April 26, 2018 - 10:28:50 AM

File

fpottier-visitors-unchained.pd...
Files produced by the author(s)

Identifiers

Collections

Citation

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

Share

Metrics

Record views

135

Files downloads

65