Think learning Haskell is difficult?


It doesn't have to be.

Welcome to a new way to learn Haskell.


Perhaps you are coming to this book frustrated by previous attempts to learn Haskell.
Perhaps you have only the faintest notion of what Haskell is.
Perhaps you were just looking for the 18 billionth* monad tutorial, certain that this time around you will understand monads once and for all.


Whatever your situation - it is our goal to make Haskell as clear, painless, and practical as we can, no matter what prior experiences you're bringing to the table.


*rough estimate

We're gold sponsors of Lambda Conf 2016!

We're also offering two days of commercial Haskell training right before Lambda Conf so you can get stronk before soaking in buckets of rehydrated lambdas! We're also sponsoring Lambda Conf's childcare program so that the conference is more accessible to primary caretakers and single parents! AND we're designing and conducting age-appropriate FP classes for kids!

Come to Lambda Conf! Get training direct from us! Come say hi! Tell us how cute our dogs are! Whatever you want, we're just really excited!


Why write a new Haskell Book?



Christopher Allen,
Julie Moronuki

(more about us)

We're writing this book because many have found learning Haskell to be difficult and it doesn't have to be.

Learning Haskell from the ground up is easier and works better - for both experienced hackers and people new to programming. The language is different enough from any you might've already tried that building up from the foundations will be less difficult and more enjoyable.

If you are an experienced programmer, we encourage you to forget what you might already know about programming and come at this course in Haskell with a beginner's mindset. If you are new to programming, you do not need to know another programming language before you start this book. Even experienced Haskellers have told us that they've found this book enriches their understanding of things they previously took for granted as magic or hadn't much thought about.

Haskell is not a difficult language to use.
Haskell is difficult to teach effectively.

So we've done something different from previous Haskell books.

Our approach is based on experience teaching Haskell to many people from a variety of walks of life, and the approach pays off. Spaced repetition and iterative deepening are effective strategies for learning, and we rely on those techniques throughout the book. You may notice we mention something only briefly at first, then return to it over and over. As your experience with Haskell deepens, you have a base from which to move to a deeper level of understanding. By working through exercises and returning to concepts you've seen earlier in the book, you develop a solid intuition for the functional style of programming.

This book is designed to help you get to a place where you could begin applying Haskell to the everyday problems you want to solve. It can also serve as a bootstrap suitable for beginning to learn programming language and type theory. Readers of this book have found that a facility for Haskell can translate into better F#, Scala, or Swift code. This is partly because Haskell pushes you to write the code you should be writing in functional'ish languages anyway.


What's in the book?



Book Cover



Getting the basics

  • Lambda Calculus
  • Hello Haskell
  • Printing Strings
  • Basic Datatypes

Defining and combining

  • Types
  • Typeclasses
  • More functional patterns
  • Recursion
  • Lists
  • Folding Lists

Getting serious

  • Algebraic Datatypes
  • Maybe, Either, and kinds

Getting real

  • Building projects in Haskell
  • Testing



Common structures

  • Monoid, Semigroup
  • Functor
  • Applicative
  • Monad (SPOOKY? No.)

Factoring out patterns

  • Foldable
  • Traversable
  • Reader
  • State
  • Parsers
  • Composing Types
  • Monad Transformers

Operational concerns and deep mysteries

  • Non-strictness
  • Commonly used data structures
  • Demystifying IO
  • Exceptions

Final Project

  • Networked TCP madness


read more about the content




Some reader voices





(follow us @haskellbook)












read more (and longer) reviews





Haskell Programming - Book Newsletter


If you want to keep tabs on our current and future work, follow @haskellbook on Twitter and subscribe to the mailing list



Site proudly generated by Hakyll