Simon Peyton Jones - Linear Haskell: practical linearity in a higher-order polymorphic language
Curry On!3 HN recommenders · recommended in 3 months, 2018-2020
19K views · 8 years ago · talk · evergreen
Simon Peyton Jones presents linear types for Haskell, showing how practical linearity can fit into a higher-order polymorphic language. The talk covers motivations such as resource handling and relates the ideas to Rust.
HN recommends it as a clear introduction to linear types in GHC from the language's lead designer.
1:33:37Adventure with Types in Haskell - Simon Peyton Jones (Lecture 1)
jasonofthel33t
69K views • 12 years ago
1:04:16Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey
Churchill College, University of Cambridge
170K views • 9 years ago
6:23Simon Peyton Jones - Haskell is useless
bunidanoable
385K views • 14 years ago
1:04:35The Algebra of Algebraic Data Types
London Haskell
27K views • 13 years ago
1:19:57Simon Peyton Jones: Data Parallel Haskell
nuACM
28K views • 16 years ago
59:03Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17
Dyalog User Meetings
7K views • 9 years ago
1:07:10Brian Beckman: Don't fear the Monad
jasonofthel33t
415K views • 13 years ago
1:12:14Beyond functional programming: a taste of Verse. Simon Peyton Jones & Tim Sweeney | Lambda Days 2023
Code Sync
30K views • 3 years ago
56:58Philip Wadler - Propositions as Types (Lambda Days 2016)
Erlang Solutions
20K views • 10 years ago
1:00:58The Next Five Years of ClojureScript - David Nolen
Metosin
19K views • 10 years ago
44:43Ron Pressler - Pull Push: Please stop polluting our imperative languages with pure concepts-Curry On
Curry On!
25K views • 11 years ago
1:05:51The Functional Programmer's Toolkit - Scott Wlaschin
NDC Conferences
79K views • 7 years ago
1:14:52Effective Programs - 10 Years of Clojure - Rich Hickey
ClojureTV
176K views • 9 years ago
1:42:53Edward Kmett - Type Classes vs. the World
Boston Haskell
36K views • 11 years ago
1:02:15Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScript
Fullstack Academy
227K views • 9 years ago
59:04On the Expressive Power of Programming Languages by Shriram Krishnamurthi [PWLConf 2019]
PapersWeLove
27K views • 7 years ago
53:56Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure
jasonofthel33t
119K views • 13 years ago
1:09:24Effective ML
Jane Street
30K views • 10 years ago
1:04:45Stanford Seminar - Concatenative Programming: From Ivory to Metal
Stanford Online
14K views • 8 years ago
1:04:53Julia: to Lisp or not to Lisp?
European Lisp Symposium
24K views • 10 years ago
6 comments from Hacker News
SPJ usually makes great introductions about new things being introduced to GHC. Here's one about linear types: ▶ this video > How do people that don't have PhDs bridge the gap in their knowledge from what's commonly taught/used (OOP and it's design patterns) to thinking in terms of monads/monoids/functors/etc. In my own experience, you just practice, and munch new knowledge bits by bits. The crucial point here is that you don't need to know _all_ of haskell to be productive using it. So you learn the basics, start using monads without understanding the Monad abstraction (it's really not something you need to understand to use), and after a while it just clicks. And once you're confortable with this basic knowledge, you learn new things when you need them. As a result, I (and many other paid haskellers) have a job writing haskell without having a PhD, without learning category theory, or without a deep math bagage.
My understanding is that the current implementation is only groundwork for possible future performance benefits, since there are no changes to the runtime system or garbage collector, and that their current intended use is mostly for allowing library authors to encode safe session/resource handling in the type system. So, new libraries can make it a type error to fail to properly close a connection or release a shared resource. Simon Peyton Jones talk: ▶ this video
Session Types, AFAIU are a specific implementation of a linear logic in some type system and I am not all too familiar with them in practice. However, I would like to think I am well versed in Linear Logic and Substructural Type Theory. I think the works by Wadler are a good place to start, in particular is a sort of review paper, based in intuitionistic logic (which he also covers in said paper), on linear logic. It’s called ‘A Taste of Linear Logic’ (I actually have the paper open in Safari on my iPhone as I type this) and it is written as a sort of primer on the area. Wadler’s bibliographies on the works contained in the pages you linked are a good source as well. If you are at all coming from a place of familiarity with Haskell, a decent overview of the current discussions on Linear Types in functional languages is at [2]. And lastly, if you like videos, Simon Peyton Jones has a great talk on YouTube [3] where he discusses practical linear types for Haskell, but the theory is not Haskell specific. I will warn you that the latter two references make several arguments and then discuss uniqueness typing (which is related but very different) and that is a whole other rabbit hole of sources, but generally a good topic to dig into as well. [1] link [2] link [3] ▶ this video
Simon Peyton Jones initial intuition [0] was that Rust would be full of soundness holes due to not starting with a full formalization. Derek Dryer, Ralf Jung and others in the RustBelt project [1] did amazing work in formalizing Rust's safety guarantees, showing that Peyton Jones' guess was not accurate. There is nothing wrong about having bugs, of course, but the reaction to the bug in this thread shows that mathematical correctness is not as universally valued as I thought it would be. I agree with the sentiment that this is a bigger issue that shouldn't be discussed in a technical thread about a specific bug. However, after reading this, it is unclear to me whether mathematical correctness is regarded in the Rust project as an explicit goal, an explicit non-goal or an unessential nice-to-have. (I do not mean to insinuate anything with the word "unclear", as I believe all three options are valid and appeal to different use cases. Almost all of the popular languages don't care about this, for instance.) [0] ▶ this video [1] link
Something to keep in mind - linear types are on their way[1], with exactly this usecase in mind. Simon Peyton Jones gave an excellent presentation on the topic[2], briefly discussing exceptions, as well as giving a mention to ResourceT and the phantom type solution in the article (described as channel-passing). [1] link [2] ▶ this video
My personal opinion but this is purely because I enjoy it the most is functional programming. So much of the positive changes I've seen of late come through functional programming. For example: * ReasonML - this is what the founder of React is working on now. The ReasonML claims itself to be JavaScript 2030 (I see it as JavaScript + TypeScript + Immutable.JS + Redux). This contains a lot of the concepts from JavaScript so is a reasonable step to make * If ReasonML isn't too scary it leads you down a path to OCaml, F# and Elm * Rust (not strictly a functional programming language, but is ridiculously fast and contains well implemented Linear Types that makes Haskell's Simon Peyton-Jones jealous [0]) - this is one of the most loved programming languages according to the Stack Overflow survey [0]: ▶ this video