Computer Science

Aleksander Boruch-Gruszecki, Martin Odersky, Edward Lee, Ondřej Lhoták, J. Brachthäuser

2023.9.13ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS

DOI: 10.1145/3618003

tlooto Summary

CC< :◻ is described, a calculus where captured variables are succinctly represented in types, and it is shown it can be used to safely implement effects and effect polymorphism via scoped capabilities.

Abstract

Type systems usually characterize the shape of values but not their free variables. However, many desirable safety properties could be guaranteed if one knew the free variables captured by values. We describe CC< :◻, a calculus where such captured variables are succinctly represented in types, and show it can be used to safely implement effects and effect polymorphism via scoped capabilities. We discuss how the decision to track captured variables guides key aspects of the calculus, and show that CC< :◻ admits simple and intuitive types for common data structures and their typical usage patterns. We demonstrate how these ideas can be used to guide the implementation of capture checking in a practical programming language.

Citation format

BORUCH-GRUSZECKI, Aleksander, et al. Capturing types. ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2023, 45: 1–52.