REVIEW 3 cited by
Formalizing Box Inference for Capture Calculus
Not yet reviewed by Pith; the record is open.
This paper has not been read by Pith yet. Machine review is queued; the pith claim, tier, and objections will appear here once it completes.
SPECIMEN: schema-true, not a live event
T0 review · schema-true
One-sentence machine reading of the paper's core claim.
pith:XXXXXXXX · record.json · timestamp
read the original abstract
Capture calculus has recently been proposed as a solution to effect checking, achieved by tracking the captured references of terms in the types. Boxes, along with the box and unbox operations, are a crucial construct in capture calculus, which maintains the hygiene of types and improves the expressiveness of polymorphism over capturing types. Despite their usefulness in the formalism, boxes would soon become a heavy notational burden for users when the program grows. It thus necessitates the inference of boxes when integrating capture checking into a mainstream programming language. In this paper, we develop a formalisation of box inference for capture calculus. We begin by introducing a semi-algorithmic variant of the capture calculus, from which we derive an inference system where typed transformations are applied to complete missing box operations in programs. Then, we propose a type-level system that performs provably equivalent inference on the type level, without actually transforming the program. In the metatheory, we establish the relationships between these systems and capture calculus, thereby proving both the soundness and the completeness of box inference.
Forward citations
Cited by 3 Pith papers
-
What's in the Box: Ergonomic and Expressive Capture Tracking over Generic Data Structures (Extended Version)
Reach capabilities name capabilities inside generic data structures, making Scala's capture checking expressive enough to type-check the standard collections library with small source changes.
-
Classifying Capabilities (Extended Version)
Tree-structured capability classifiers with only/except projections make kind-based capture constraints decidable, sound, and usable in Scala 3’s capture checker.
-
Typestate via Revocable Capabilities
Scala 3 extension that lets capabilities be revoked and returned flow-sensitively, turning each capability into a typestate token checked by the compiler.
Discussion (0). Sign in to comment.