Welcome to Type Classes!
On February 24, 1988, Philip Wadler introducedPhilip Wadler, Overloading in Haskell (proposal). An October 1988 white paper formalized the proposal, using the term “type classes”.
the idea of type “classes” for Haskell, as a solution to the problem of overloading.
Thirty years later, we present Type Classes.
Who we are
I am one of the authors of Haskell Programming from First Principles, more often called “haskellbook.” While many people successfully learned Haskell from my book, I knew I wanted to write an intermediate Haskell book to follow it up.
I originally conceived that followup as a referencee manual; in private, I referred to it as “the Haskell enchiridion” after the Greek word that means “manual or handbook”.
After reading his blog postUnwanted Haskell triangle.
about an unwanted Stack Overflow answer, I asked Chris Martin to work with me on the enchiridion. Though he wasn’t sold on that title, he also wanted a practical manual for Haskell. He has been a developer for many years, and brought a breadth of experience, and opinions about things like tooling, that I was lacking. Our backgrounds and styles would complement each other.
About a year ago, we announced that we were working on a new, intermediate Haskell book called The Joy of Haskell.
And working is what we have been doing!
We planned to cover a huge number of practical matters, as well as locate Haskell in its context, a context that spanned from Leibniz, Boole, and Frege, to Noam Chomsky, Saunders Mac Lane, and the developers of Lisp.
In short, our Joy overflowed. We had far too much to say about Haskell and its ecosystem, historical and contemporary. We fretted over how to fit it all into a reasonably sized book. We felt pressured to cut back on library coverage and other topics, although early feedback on the outline suggested people wanted to read even more about those practical topics than we felt we could include.
So, I convinced him that what we really needed to do was start a site where all the overflow could go, a site that could also host new ideas we’ve both had for beginner-level material. And that idea grew into this.
Why we’re here
This site will give a home to all the things we wanted to do but couldn’t fit into Joy. The core of the site will be video courses on Haskell, Nix, and related subjects. Some of these will be focused on a specific project, such as building a native GUI app with
fltkhs, or taking a deep dive into source code. Many of the courses will be updated and improved versions of lessons I have taught in meetups, including beginner level courses. The first course we’ll do is an extension of my blog post, The Nesting Instinct.The Nesting Instinct
Courses will form a coherent set of videos with accompanying text that explore a topic in detail, usually iterating on and refactoring code that solves some problem. Projects will usually cover topics less deeply but will result in working software. We think these are necessary complements to each other, based on what we know about best practices in language teaching.
Some courses will eventually focus more on the theoretical foundations of Haskell. In time, we will branch into topics such as set theory and category theory, logics, how to write better documentation, and language pedagogy.
We will also have content about Nix, not just on its own as a language, package manager, and operating system, but as an ops tool and build tool. We believe Nix is a set of wonderful tools that more people would love if the education and documentation story were improved.
Chris has a fantastic series of posts (some may also turn into short videos) that compare features of other programming languages (usually Java or Python) with Haskell, along the same lines as our comparison of Java’s interfaces to Haskell’s typeclasses.Typeclasses in Translation
The portion of the site we’re calling the Haskell Museum will host a collection of explorations of interesting Haskell packages and programs, as well as a collection of documents, with annotations and commentary, related to the development of Haskell.
We are still writing Joy, but many of the things we’ll cover here were either completely out of scope of Joy, or we risked covering them too briefly and shallowly due to the length constraints on a physical book. Also Joy was never intended to have content for beginners who don’t already know Haskell. Now Joy will be a more focused, concise book than we would otherwise have written, which we think will suit its origins as an enchiridion better.
Once we have some more content in place and the first video course is finished, Type Classes will be a subscription serviceWe are not taking money yet, as we do not feel we have enough content in place to justify it yet. We expect we will start accepting payments once the first video course and the first project are ready for release, sometime in April 2018.
. That will allow both of us to work full time on this and adhere to a frequent content-release schedule as well as develop new courses and projects (and keep writing Joy). It will also allow us to release and maintain open source libraries and continue contributing documentation to the larger ecosystem, all with the goal of helping people to learn, get productive, and feel the joy of working in pure functional languages.