Substitution is a common and popular approach to implementing name binding in definitional interpreters. A common pitfall of implementing substitution functions is variable capture. The traditional approach to avoiding variable capture is to rename variables. However, traditional renaming makes for an inefficient interpretation strategy. Furthermore, for applications where partially-interpreted terms are user facing it can be confusing if names in uninterpreted parts of the program have been changed. In this paper we explore two techniques for implementing capture avoiding substitution in definitional interpreters to avoid renaming.
@InProceedings{bachpoulsen:OASIcs.EVCS.2023.2, author = {Bach Poulsen, Casper}, title = {{Renamingless Capture-Avoiding Substitution for Definitional Interpreters}}, booktitle = {Eelco Visser Commemorative Symposium (EVCS 2023)}, pages = {2:1--2:10}, series = {Open Access Series in Informatics (OASIcs)}, ISBN = {978-3-95977-267-9}, ISSN = {2190-6807}, year = {2023}, volume = {109}, editor = {L\"{a}mmel, Ralf and Mosses, Peter D. and Steimann, Friedrich}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/OASIcs.EVCS.2023.2}, URN = {urn:nbn:de:0030-drops-177728}, doi = {10.4230/OASIcs.EVCS.2023.2}, annote = {Keywords: Capture-avoiding substitution, lambda calculus, definitional interpreter} }
Feedback for Dagstuhl Publishing