[Curry On] Linear Haskell: practical linearity in a higher-order polymorphic language
Linear type systems are more often talked about than used, with the notable exception of Rust – a keynote at Curry On 2017. I have long thought that we should be able to use linearity to improve the expressiveness and efficiency of functional programming languages, especially Haskell. But I always got lost in a deep swamp of exclamation marks and upside down & symbols. In a collaboration with Tweag I/O, we came up with a new approach to linearity that really does seem to have a good power-to-weight ratio, and that fits smoothly with the existing language. The key ideas is to attach linearity to function arrows, rather than bifurcating types into linear and non-linear versions (the dominant approach). In this talk I’ll explain and motivate the key ideas, from the point of view of a programmer rather than a type theorist, focusing especially on update-in-place, and on I/O protocols. I hope you’ll come away with a clearer picture of the linearity landscape and how we might think about it.
Simon Peyton Jones, MA, MBCS, CEng, graduated from Trinity College Cambridge in 1980. After two years in industry, he spent seven years as a lecturer at University College London, and nine years as a professor at Glasgow University, before moving to Microsoft Research (Cambridge) in 1998. His main research interest is in functional programming languages, their implementation, and their application. He has led a succession of research projects focused around the design and implementation of production-quality functional-language systems for both uniprocessors and parallel machines. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages.
More generally, he is interested in language design, rich type systems, software component architectures, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation – that’s one reason he loves functional programming so much.