Skip to content
0:00 / 0:00

#haskell#algebraicdatatypes#typetheory

The Algebra of Algebraic Data Types

London Haskell

1.5K subscribers • 6 videos on Hallway

YouTube
  • Recommended by 4 people: 1 on Lobsters, 2 in engineering communities and 1 curated list.
  • Presented by Chris Taylor

Advanced. Deep dive for people who know the field.

27K views13 years ago4 recommendations

Programming languagesComputer scienceFunctional programmingLanguage design and type systemsComputation and complexity

Chris Taylor explains how algebraic data types behave like high school algebra, showing how sum, product, and exponential types correspond to arithmetic operations.

Why it's here

4 people recommend this

What people say. Highly recommended as an intuitive and mind-bending introduction to type theory and the mathematical foundations of algebraic data types.

u/omomonomin r/compsci • Recommends

The Algebra of Algebraic Data Types

u/derekwrightin r/haskell • Recommends

The Algebra of Algebraic Data Types - London Haskell Video (28-Nov-12)

bealaon Lobsters • Recommends

The Algebra of Algebraic Data Types

programming-talkscurated list on GitHubRecommends

Under “Haskell”

The Algebra In Algebraic Data Types 01:04:35 by **Chris Taylor** (2012)

u/tom_on_redditin r/compsci • Mentions

On “Viewing a recursive data structure as a polynomial”

You might appreciate this set of blog posts on "The Algebra of Algebraic Data Types", or this video on the same topic by the same guy. Zippers and derivatives are mentioned!

u/quiteamessin r/ProgrammingLanguages • Mentions

On “So what are homotopies in homotopy type theory?”

> Quotient types (type of values quotiented over an equivalence relation), Are quotient types similar to sum types and product types in the sense that can calculate the number of inhabitants? The idea I'm referring to is explained in detail in this talk.

u/pfurlain r/functionalprogramming • Mentions

On “Question about the naming of ADTs (Abstract Data Types) in functional programming”

Going a bit further in topic The algebra of algebraic data types and even further Isomorphic Reasoning: Counting with Types Part 1, Part 2, Part 3.

crntayloron Hacker News • Mentions

On “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: link to this video )

nbouscalon Hacker News • Mentions

On “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 misfortune1 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…

crntayloron Hacker News • Mentions

On “The Algebra of Algebraic Data Types”

…d answers2 and these papers 3,4 on derivatives and dissections by Conor McBride. There are also several good blog posts5 and a paper6 by Brent Yorgey on the topic of combinatorial species, and of course Dan Piponi's blog7 is a treasure trove of interesting insights at the intersection of math, physics and computer science. 0 link 1 link to 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 repacka…

inngueston Hacker News • Mentions

On “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: link to this video