What lives here
Fifty short lessons, one unbroken chain: every page ends with a link to the next one, so you can read the course start to finish without ever wondering where to click. Each lesson teaches one idea with short examples, from the first script to a working command line tool:
- Start here: What is Haskell and why it matters — then follow the chain through lesson 50.
- Language core, lessons 2-19: install, GHCi, first program, let and where, types, functions, currying, operators, guards, case, pattern matching, tuples, lists, ranges, comprehensions, recursion, higher order functions, lambdas.
- Types and abstractions, lessons 20-32: type classes, polymorphism, Maybe, Either, data types, records, newtype, trees, Functor, Applicative, Monad, do notation.
- Real programs, lessons 33-48: IO, files, modules, Cabal, dependencies, HUnit, QuickCheck, laziness, strictness, folds, monoids, Traversable, transformers, errors, concurrency, parsing.
- Finish, lessons 49-50: the todo CLI capstone and the hero roadmap with every lesson on one page.
How to use this course
Type every example, do not just read it. Load each snippet into
GHCi before moving on, because the error messages are the fastest
way to learn what the type checker wants.
Two rules carry the whole course: write the signature first, and let
the compiler drive. When a definition refuses to typecheck, the
message names the exact expression that disagrees.