DeepAI
Log In Sign Up

Bidirectional Typing

08/16/2019
by   Jana Dunfield, et al.
0

Bidirectional typing combines two modes of typing: type checking, which checks that a program satisfies a known type, and type synthesis, which determines a type from the program. Using checking enables bidirectional typing to break the decidability barrier of Damas-Milner approaches; using synthesis enables bidirectional typing to avoid the large annotation burden of explicitly typed languages. In addition, bidirectional typing improves error locality. We highlight the design principles that underlie bidirectional type systems, survey the development of bidirectional typing from the prehistoric period before Pierce and Turner's local type inference to the present day, and provide guidance for future investigations.

READ FULL TEXT

page 1

page 2

page 3

page 4

12/12/2018

Bidirectional Type Checking for Relational Properties

Relational type systems have been designed for several applications incl...
05/25/2018

Spine-local Type Inference

We present spine-local type inference, a partial type inference system f...
06/28/2019

Bidirectional Type Class Instances (Extended Version)

GADTs were introduced in Haskell's eco-system more than a decade ago, bu...
01/09/2022

Bidirectional Runtime Enforcement of First-Order Branching-Time Properties

Runtime enforcement is a dynamic analysis technique that instruments a m...
11/01/2019

Program Synthesis with Live Bidirectional Evaluation

We present an algorithm for completing program sketches (partial program...
11/01/2019

Program Sketching with Live Bidirectional Evaluation

We present Sketch-n-Myth, a technique for completing program sketches wh...
10/09/2017

Synthesizing Bijective Lenses

Bidirectional transformations between different data representations occ...