English

Linear effects, exceptions, and resource safety: a Curry-Howard correspondence for destructors

Programming Languages 2026-04-22 v2 Logic in Computer Science

Abstract

We analyse the problem of combining linearity, effects, and exceptions, in abstract models of programming languages, as the issue of providing some kind of strength for a monad T(E)T(- \oplus E) in a linear setting. We consider in particular for TT the allocation monad, which we introduce to model and study resource-safety properties. We apply these results to a series of two linear effectful calculi for which we establish their resource-safety properties. The first calculus is a linear (optionally ordered) call-by-push-value language with two allocation effects new\mathbf{new} and delete\mathbf{delete}. The resource-safety properties follow from the linear and ordered character of the typing rules. We then integrate exceptions with linearity and effects by adjoining default destruction actions to types, as inspired by C++/Rust destructors. We see destructors as objects δ:ATI\delta : A\rightarrow TI in the slice category over TITI. This construction gives rise to a second calculus, the resource call-by-push-value, featuring exceptions and destructors, and whose weakening and exchange rules perform side-effects. It is therefore affine at the level of types but ordered at the level of derivations. As in C++ and Rust, a ``move'' operation -- the side-effecting exchange rule -- is necessary for releasing resources in random order, as opposed to LIFO order.

Keywords

Cite

@article{arxiv.2510.23517,
  title  = {Linear effects, exceptions, and resource safety: a Curry-Howard correspondence for destructors},
  author = {Sidney Congard and Guillaume Munch-Maccagnoni and Rémi Douence},
  journal= {arXiv preprint arXiv:2510.23517},
  year   = {2026}
}

Comments

Slightly longer version with more details of a paper that appeared in ESOP 2026 with the same title. 29 pages + appendix