Haskell Tutorials

Learning Haskell is notoriously hard. Especially if you've been working with JS, PHP, Java, Ruby, et al. Haskell forces you to think differently, and that's exactly what makes it worth the effort.

But it doesn't have to be a frustrating experience. Join us as we simplify and demystify Haskell.

Be notified when we publish new tutorials

What makes Haskell fundamentally so hard to learn?

I believe that a unique mix of language features – static-typing, type-inference, immutability, purity, and laziness – makes Haskell fundamentally very different from every other popular language, like Ruby, Java, Python, C, or Javascript. It forces you to change the way you think about problems, and how you structure your solutions.

I spoke at length about "Why Haskell is hard to learn and how to deal with it", in my talk at Functional Conf 2019.

How is this website making Haskell easier to learn?

By making sure you start building things with Haskell faster. Seeing ideas come to life is the most exciting feeling for a developer. It kickstarts a positive feedback-loop that makes you want to invest more time in learning.

Think about losing a pound of weight, or gaining a pound of muscle-mass. It motivates you to hit the gym. Learning Haskell is like hitting the gym. Lots of hard-work for a delayed pay-off. We're making sure that you start seeing small wins much faster.

Unforunately, a lot of beginners spend a lot of time with the academic underpinnings of Haskell, and go down unproductive rabbit-holes that cause confusion, frustration, and ultimately cause them to abandon this journey altogether. We will stay away from category theory or type-system theory for as long as possible.

Instead, we are interested in showcasing Haskell for its industrial strengths: what it enables one to build, the whole categories of bugs (pun intended!) it eliminates, and the brilliant refactoring + maintenance experience it enables.

Who is writing this content?

Saurabh Nanda

Founder, Vacation Labs

In 2016, after evaluating several typed-FP languages, my journey of learning Haskell began. It was a very long, and very frustrating experience. Trying to teach Haskell to other team-members was a whole new challenge altogether.

Since 2016, we've managed to put 60,000+ lines of Haskell into production at Vacation Labs, where we're building a travel-commerce product. (The other technologies are Rails and AngularJS).

I'm a self-taught programmer, and have built fairly large systems in Ruby, Javascript, Common Lisp (yes!), PHP, and Java throughout my career. I've even sneaked Haskell into a voluntary government project!

Be notified when we publish new tutorials

Haskell without the theory

A "work-in-progress" book with Haskell tutorials for beginners. If you are completely new to Haskell this is where you should start.

Opaleye tutorial

A tutorial for the Opaleye DB library. We use it in production at Vacation Labs.

Haskell on AWS Lambda

A very detailed tutorial on how to use Haskell on AWS Lambda without any external dependencies, like node or serverless-haskell. We use the techniques described in this tutorial in production (at Vacation Labs).

Getting started with Odd Jobs

A guide to help you get started with Odd Jobs, a Postgres-backed job-queue that was open-sourced from production code at Vacation Labs.

Haskell Lists: The Ultimate Guide

Covers basic list sytax, commonly used functions from Data.List, and missing features that require other Haskell packages.