Annotations for Intersection Typechecking
Jana Dunfield

TL;DR
This paper investigates the design of annotation mechanisms for intersection type systems in functional programming, introducing new annotation forms and clarifying their roles in context management.
Contribution
It introduces a refined set of annotation mechanisms, including a novel left-hand annotation, to better handle intersection types and contextual information in typechecking.
Findings
Separated annotations into elementary mechanisms
Introduced a new left-hand annotation for context guarding
Clarified the role of annotations in intersection type systems
Abstract
In functional programming languages, the classic form of annotation is a single type constraint on a term. Intersection types add complications: a single term may have to be checked several times against different types, in different contexts, requiring annotation with several types. Moreover, it is useful (in some systems, necessary) to indicate the context in which each such type is to be used. This paper explores the technical design space of annotations in systems with intersection types. Earlier work (Dunfield and Pfenning 2004) introduced contextual typing annotations, which we now tease apart into more elementary mechanisms: a "right hand" annotation (the standard form), a "left hand" annotation (the context in which a right-hand annotation is to be used), a merge that allows for multiple annotations, and an existential binder for index variables. The most novel element is the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Advanced Software Engineering Methodologies · Software Engineering Research
