Bidirectional Typing with Freezing, Skeletons, and Ghosts
The paper proposes Fresco, a novel bidirectional type inference approach for first-class polymorphism that enables local type information to flow back and forth between functions and arguments.
Proposes a novel bidirectional type inference approach for first-class polymorphism with flexible information flow
Before reading this…
Applications
- →Type inference for functional programming languages
To understand this paper, make sure you know these concepts first:
- Understanding of type systems and functional programmingfind papers →
Abstract
More Like ThisBidirectional typing makes use of local information flow between functions and arguments. Conventional bidirectional typing only supports unidirectional information flow, typically from functions to arguments, which is insufficient to infer first-class polymorphism. Existing work on improving information flow either has limited support for mixed information flow or requires ad hoc mechanisms that harm predictability. We propose Fresco, a novel bidirectional type inference approach to first-class polymorphism. Fresco enables local type information to flow back and forth between functions and arguments via skeletons, with ghosts representing unknown type information, and allows users to customise the direction of information flow by freezing. The flexible information flow of Fresco enables expressive and predictable inference for first-class polymorphism. We provide a declarative specification for Fresco, a simple type inference algorithm that is sound and complete with respect to the declarative system, and a prototype implementation that further generalises Fresco to infer modal effect types.