Modular Inference of Linear Types for Multiplicity-Annotated Arrows

11/01/2019
by   Kazutaka Matsuda, et al.
0

Bernardy et al. [2018] proposed a linear type system λ^q_→ as a core type system of Linear Haskell. In the system, linearity is represented by annotated arrow types A →_m B, where m denotes the multiplicity of the argument. Thanks to this representation, existing non-linear code typechecks as it is, and newly written linear code can be used with existing non-linear code in many cases. However, little is known about the type inference of λ^q_→. Although the Linear Haskell implementation is equipped with type inference, its algorithm has not been formalized, and the implementation often fails to infer principal types, especially for higher-order functions. In this paper, based on OutsideIn(X) [Vytiniotis et al., 2011], we propose an inference system for a rank 1 qualified-typed variant of λ^q_→, which infers principal types. A technical challenge in this new setting is to deal with ambiguous types inferred by naive qualified typing. We address this ambiguity issue through quantifier elimination and demonstrate the effectiveness of the approach with examples.

READ FULL TEXT
research
11/01/2019

A Modular Inference of Linear Types for Multiplicity-Annotated Arrows

Bernardy et al. [2018] proposed a linear type system λ^q_→ as a core typ...
research
10/26/2017

Linear Haskell: practical linearity in a higher-order polymorphic language

Linear type systems have a long and storied history, but not a clear pat...
research
10/28/2020

Higher Order Linear Transformer

Following up on the linear transformer part of the article from Katharop...
research
04/01/2020

FreezeML: Complete and Easy Type Inference for First-Class Polymorphism

ML is remarkable in providing statically typed polymorphism without the ...
research
05/25/2018

Spine-local Type Inference

We present spine-local type inference, a partial type inference system f...
research
07/05/2018

Gradual Liquid Type Inference

Liquid typing provides a decidable refinement inference mechanism that i...
research
03/10/2021

Linear Constraints

A linear argument must be consumed exactly once in the body of its funct...

Please sign up or login with your details

Forgot password? Click here to reset