@inproceedings{bernardy2018linear, author = {Bernardy, Jean-Philippe and Boespflug, Mathieu and Newton, Ryan R. and Peyton Jones, Simon and Spiwack, Arnaud}, title = {Linear Haskell: practical linearity in a higher-order polymorphic language}, booktitle = {Principles of Programming Languages 2018 (POPL 2018)}, year = {2018}, month = {January}, 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: backward-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 into 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. Here is my talk at Curry On, July 2018}, publisher = {ACM}, url = {http://approjects.co.za/?big=en-us/research/publication/linear-haskell-practical-linearity-higher-order-polymorphic-language/}, }