HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

The Algebra of Algebraic Data Types

London HaskellCited 4× on HN, 2013-2015
YouTube
27K views · 13 years ago · talk · evergreen

A London Haskell talk on the algebra of algebraic data types, showing how sum and product types behave like arithmetic. It frames types as numbers obeying algebraic laws.

Cited as the author's own talk and a way to go deeper on type algebra, with a note that the audio is rough at the start.

Functional programmingProgramming language design#haskell#typealgebra#sumtypes#producttypes#functionalprogramming

4 comments from Hacker News

@innguest2015 · in “A Rust Contributor Tries Their Hand at Go”

I very much agree with you. A zip code is a string even though it looks like a number. Likewise C/Java/Go "types" are tags even though they look like types. Real types are numbers that obey type algebra, which C/Java/Go have no idea exists. The Algebra of Algebraic Data Types: ▶ this video

CitesView on HN
@crntaylor2013 · in “The Algebra of Algebraic Data Types”

Author of the blog post here. It's amusing to see this submitted by Don Stewart, since it was his explanation[0] of algebraic data types that first made them "click" for me! I think I forgot to mention him in this post, but I remembered in the talk[1]. If anyone's interested in this and where else it might go, I recommend read Don's SO answer[0], this SO question and the related answers[2] and these papers [3,4] on derivatives and dissections by Conor McBride. There are also several good blog posts[5] and a paper[6] by Brent Yorgey on the topic of combinatorial species, and of course Dan Piponi's blog[7] is a treasure trove of interesting insights at the intersection of math, physics and computer science. [0] link [1] ▶ this video (shitty audio for the first minute or 2 - it gets better). [2] link [3] link [4] link [5] link [6] link [7] link Edit: It should go without saying, but because a few people last time around seemed to think I was trying to pass this off as my own ideas, let me state that there is nothing original in this blog post. It's a repackaging of the ideas and work of lots of other people, all of whom are way smarter than I am.

CitesView on HN
@nbouscal2013 · in “Learn You a Haskell for Great Good”

There are two very different types of arguments typically made as to why to learn the more esoteric languages (Haskell, Lisp, Forth, others). The first is the more common: learning these languages exposes you to other ways of programming, which in turn makes you a better programmer no matter what language you're programming in. This is unquestionably true. Mainstream languages are constantly learning new things from these languages, which means you will be able to apply the techniques you learn from them to your code no matter what language you write in. I have the misfortune[1] of writing a lot of PHP at my day job, but it turns out even PHP has support for filter and map over arrays. If I hadn't learned functional programming, I would never have even looked for them. The other argument, which is made less often, is that you can actually write great software in these languages. This argument is made less often because we can obviously look at the market and the TIOBE index and see that Haskell is way down at #30 with 0.323% of the market share. However, there are really great programs made in Haskell (xmonad, for one). There are also tons of great programs made in Lisps, especially Clojure of late. So, this second argument is not entirely a dead end either. Revisiting something I mentioned in the first argument for a moment though, I would actually make a third argument that I rarely see. As I said, other languages are constantly learning new things from these languages. Has

CitesView on HN
@crntaylor2013 · in “The Algebra of Algebraic Data Types”

"This guy who is discovering it by himself" is me (the OP) about a year ago! Derivatives of types to come in part II or III (or just watch the talk on YouTube: ▶ this video )

CitesView on HN
Simon Peyton Jones - Linear Haskell: practical linearity in a higher-order polymorphic language1:03:34

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

Curry On!
19K views • 8 years ago
Adventure with Types in Haskell - Simon Peyton Jones (Lecture 1)1:33:37

Adventure with Types in Haskell - Simon Peyton Jones (Lecture 1)

jasonofthel33t
69K views • 12 years ago
Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey1:04:16

Simon Peyton-Jones: Escape from the ivory tower: the Haskell journey

Churchill College, University of Cambridge
170K views • 9 years ago
Lenses, Folds, and Traversals1:54:46

Lenses, Folds, and Traversals

Edward Kmett
54K views • 13 years ago
Philip Wadler  - Propositions as Types (Lambda Days 2016)56:58

Philip Wadler - Propositions as Types (Lambda Days 2016)

Erlang Solutions
20K views • 10 years ago
Stephen Wolfram's Introduction to the Wolfram Language12:56

Stephen Wolfram's Introduction to the Wolfram Language

Wolfram
924K views • 12 years ago
Domain Modeling Made Functional - Scott Wlaschin - KanDDDinsky 201950:49

Domain Modeling Made Functional - Scott Wlaschin - KanDDDinsky 2019

KanDDDinsky
74K views • 6 years ago
Brian Beckman: Don't fear the Monad1:07:10

Brian Beckman: Don't fear the Monad

jasonofthel33t
415K views • 13 years ago
The Functional Programmer's Toolkit - Scott Wlaschin1:05:51

The Functional Programmer's Toolkit - Scott Wlaschin

NDC Conferences
79K views • 7 years ago
Effective ML1:09:24

Effective ML

Jane Street
30K views • 10 years ago
Simon Peyton Jones - Haskell is useless6:23

Simon Peyton Jones - Haskell is useless

bunidanoable
385K views • 14 years ago
"Type-Driven Program Synthesis" by Nadia Polikarpova39:40

"Type-Driven Program Synthesis" by Nadia Polikarpova

Strange Loop Conference
15K views • 8 years ago
Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScript1:02:15

Lambda Calculus - Fundamentals of Lambda Calculus & Functional Programming in JavaScript

Fullstack Academy
227K views • 9 years ago
Edward Kmett - Type Classes vs. the World1:42:53

Edward Kmett - Type Classes vs. the World

Boston Haskell
36K views • 11 years ago
The Next Five Years of ClojureScript - David Nolen1:00:58

The Next Five Years of ClojureScript - David Nolen

Metosin
19K views • 10 years ago
Edwin Brady - Idris 2: Type-driven development of Idris | Code Mesh LDN 1843:23

Edwin Brady - Idris 2: Type-driven development of Idris | Code Mesh LDN 18

Code Sync
20K views • 7 years ago
Dynamic Languages Wizards Series - Panel on Language Design1:58:46

Dynamic Languages Wizards Series - Panel on Language Design

Eduardo Cavazos
16K views • 14 years ago
Domain Modeling Made Functional - Scott Wlaschin51:40

Domain Modeling Made Functional - Scott Wlaschin

NDC Conferences
71K views • 9 years ago
Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '1759:03

Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17

Dyalog User Meetings
7K views • 9 years ago
Stanford Seminar - Concatenative Programming: From Ivory to Metal1:04:45

Stanford Seminar - Concatenative Programming: From Ivory to Metal

Stanford Online
14K views • 8 years ago