- Chapter 1: Introduction
- Chapter 2: First steps
- Chapter 3: Types & classes
- Chapter 4: Defining functions
- Chapter 5: List comprehensions
- Chapter 6: Recursive functions
- Chapter 7: Higher order functions
- Chapter 8: Declaring types and classes
- Chapter 9: The countdown problem
- Chapter 10: Interactive programming
- Chapter 11: Unbeatable tic-tac-toe
- Chapter 12: Monad and more
- Chapter 13: Monadic parser
- Chapter 14: Foldables and friends
- Chapter 15: Lazy evaluation
- Chapter 16: Reasoning about programs
- Chapter 17: Calculating compilers