Discover the
Joy of Haskell

There is so much in Haskell to love.
Let us help you discover it all.

A new book for intermediate Haskell users.

We know Haskell; yet every day, as we use Haskell and get to know it better, we find there is still so much to learn. A large ecosystem of practical libraries and language extensions that we want to know better. Concepts from category theory and logic that we had never encountered before. A rich history of logicians, mathematicians, and computer scientists advancing the field through academic white papers.

And we want to know it all.

lambdaize = fmap f
  where
    f 'l' = 'λ'
    f x   = x
{-# LANGUAGE LambdaCase #-}
lambdaize = fmap (\case 'l' -> 'λ'
                        x   -> x)
λ> putStrLn (lambdaize "Delightful!")
-- Deλightfuλ!

Haskell the way you want it.

  • Illustrative examples for Haskell libraries and GHC language extensions.
  • Concise, clear explanations of fundamental math and logic concepts.
  • A reference manual for things that are easy to forget.
  • An opinionated style guide of Haskell usage.
  • A choose-your-own-learning-adventure through a forest of functors.
import Data.Attoparsec.Text

λ> parseOnly (char 'a') "a"
-- Right 'a'

λ> parseOnly (char 'a') ""
-- Left "'a': not enough input"

λ> parseOnly (char 'a') "b"
-- Left "'a': Failed reading: satisfy"

λ> parseOnly
     (many (char 'a') <* char 'b')
     "aaab"
-- Right "aaa"