Title
Linear Haskell: practical linearity in a higher-order polymorphic language
Abstract
Linear type systems have a long and storied history, but not a clear path forward to integrate with existing languages such as OCaml or Haskell. In this paper, we study a linear type system designed with two crucial properties in mind: backwards-compatibility and code reuse across linear and non-linear users of a library. Only then can the benefits of linear types permeate conventional functional programming. Rather than bifurcate types into linear and non-linear counterparts, we instead attach linearity to function arrows. Linear functions can receive inputs from linearly-bound values, but can also operate over unrestricted, regular values. To demonstrate the efficacy of our linear type system — both how easy it can be integrated in an existing language implementation and how streamlined it makes it to write programs with linear types — we implemented our type system in ghc, the leading Haskell compiler, and demonstrate two kinds of applications of linear types: mutable data with pure interfaces; and enforcing protocols in I/O-performing functions.
Year
DOI
Venue
2018
10.1145/3158093
Proceedings of the ACM on Programming Languages
Keywords
DocType
Volume
GHC,Haskell,laziness,linear logic,linear types,polymorphism,typestate
Journal
2
Issue
ISSN
Citations 
POPL
2475-1421
3
PageRank 
References 
Authors
0.56
19
5
Name
Order
Citations
PageRank
Jean-Philippe Bernardy112012.33
Mathieu Boespflug230.56
Ryan Newton380270.80
Simon L. Peyton Jones45036381.19
Arnaud Spiwack5917.04