[Announcement] What to Expect from Type Classes

RAQ (Recently Asked Questions)

Since our initial Type Classes announcement, we’ve been asked a number of questions about payments and planned content, enough that we thought we should answer them here where everyone could read them.

First thing’s first, we aren’t taking payments yet. When we start, sometime later this month (April 2018), the subscription fee will be $29 per month. We’re working on building out our content as well as finishing up the technical end of things, and we won’t start charging until we feel like we have something that we would pay for.

Some content will always be free, particularly in the Haskell Museum. The Haskell Museum is largely a showcase of other people’s workFor example, there are short articles about how we generated the header images throughout the site using people’s Haskell projects., usually with our commentary on it, but we present this as a service to the Haskell community, so it will always be freely available. Any article referenced in a talk we give publicly will also remain free indefinitely, so that anyone in the future watching the video of the talk will continue to have free access to that article.

Until the end of April, when we’ll start taking payments, more content is free, as a trial period. I’ve listed some representative articles throughout this post.

Here is a summary of what you can expect once we are taking subscriptions.

Courses

The Courses will be video-based but include transcriptions and notes for each video, so that you can choose to read instead of watch if you prefer. A course will typically be a series of connected videos, usually 5-15 videos of approximately 15 minutes each. Neither of us likes watching long videos; we find that short, concentrated lessons work better for us, so that’s what we’re writing.

As a subscriber, you can expect one new course per month, roughly 30 minutes of new video content per week. They will vary between Haskell fundamentals and practical problem solving, such as writing web servers, and between beginner-oriented and more advanced material. We will be very specific for each course what you can expect to learn and what prerequisites you should have coming into the course.

Projects

In addition to the courses, we will be offering content centered around projects. The projects will be a mixture of short videos and text that walk you through completing specific projects. This will give us the opportunity to demonstrate how we think with types to model our problem, how we explore new libraries and read Haskell documentation, how we use our tooling, and in the end, we’ll all walk away with some working software, whether it’s a Twitterbot, a shell script, or a native GUI app.

As a subscriber, you can expect a minimum of one new project per month. We expect these to be a good supplement for the courses and also to offer much-needed intermediate, practical Haskell content.

Other Haskell learning content

The rest of the Learn Haskell content is broken into three parts; we’ve tentatively called them Reference, Transitions, and GHC.

Transitions

I’m most excited about the Transitions section. This section is largely Chris’s brainchild.I am Julie, and I am a Haskell native. I learned Haskell as a first programming language, and it’s still the language I know the most about. Chris has a decade or so of professional experience with Java and Python and other languages. We wrote the Typeclasses in TranslationTypeclasses in Translation post because my Haskell students kept asking me if typeclasses are like Java interfaces, and I found it hard to give an adequate answer. We both enjoyed what we learned writing that article and Chris wanted to keep writing similar articles, so we have a whole section dedicated to it. If you’ve ever wanted to know what Python’s decorator syntax might look like in Haskell or to compare some infix operators in JavaScript to the corresponding Haskell, this is the place for you. Chris has a lot of ideas for them.

Currently available in Transitions:

Tips

The Tips is articles, like the article on contravariance we recently published. Sometimes they’ll be shorter, more like what you think of as “tips”. A lot of this content will be shared with Joy of HaskellJoy of Haskell, an intermediate Haskell book we’re writing., so subscribing to Type Classes is, in that sense, like having early access to Joy (although Joy has some things that won’t be here, at least not for a long time, such as introductions to various logics, and this has a lot of content that will never be in Joy).

You can get a sense of what to expect from this content from these articles in addition to the contravariance article mentioned above:

GHC

We’ve put GHC in a separate section because the compiler isn’t the language, although in a lot of ways they’re inseparable. However, GHC is quite interesting in its own right, so we want to help people understand it. This is also the section of the site where we will cover all the language extensions. Much of this content will also appear in Joy of Haskell.

Coming soon

We have two more large sections of the site coming soon: Learn Nix, and Haskell Tooling.

We are both Nix users; Chris has been using it a long time and accumulated experience with it as a language, a package manager, an operating system, a server management tool, and a Haskell build tool. Nix is such a powerful tool, especially when combined with Haskell, but it can be hard to get started using Nix. Even finding answers to common questions can be difficult. While there will be Haskell-plus-Nix content mixed in with the Haskell content, this section will be aimed at making it reasonably painless to learn about and use Nix, in whichever capacities you’d like.

And, finally, we felt strongly that Haskell needs a good central resource for learning about Haskell tooling. This section of the site will cover GHCi and, yes, editors and plugins, linters and build tools, profiling and debugging, ghcid and haddock, and all the other tooling.

Content for the Nix and Tooling sections will likely appear somewhat less regularly, especially as we’re first getting started, but they’re important topics, and they need good coverage.