- Lesson 1 Getting Started with Haskell
Unit 1: Foundations of Functional programming
- Lesson 2 Functions and functional programming
- Lesson 3 Lambda functions and lexical scope
- Lesson 4 First-class functions
- Lesson 5 Closures and partial application
- Lesson 6 Lists
- Lesson 7 Rules for recursion and pattern matching
- Lesson 8 Writing recursive functions
- Lesson 9 Higher-order functions
- Lesson 10 Capstone: Functional object-oriented programming with robots!
Unit 2: Introducing types
- Lesson 11 Type basics
- Lesson 12 Creating your own types
- Lesson 13 Type classes
- Lesson 14 Using type classes
- Lesson 15 Capstone: Secret messages!
Unit 3: Programming in Types
- Lesson 16 Creating types with "and" and "or"
- Lesson 17 Design by Composition - Semigroups and Monoids
- Lesson 18 Parameterized types
- Lesson 19 The Maybe type: dealing with missing values
- Lesson 20 Capstone: Time Series
Unit 4: IO in Haskell
- Lesson 21 Hello World! - Introducing IO
- Lesson 22 Interacting with the command line and lazy I/O
- Lesson 23 Working with text and Unicode
- Lesson 24 Working with files
- Lesson 25 Working with binary data
- Lesson 26 Capstone: Processing binary files and book data
Unit 5: Working with type in a context
- Lesson 27 The Functor type class
- Lesson 28 A peek at the Applicative type class: using functions in a context
- Lesson 29 Lists as a Context: A deeper look at the applicative type class
- Lesson 30 Introducing the Monad type class
- Lesson 31 Making Monads easier with do-notation
- Lesson 32 The List Monad and List Comprehensions
- Lesson 33 Capstone: SQL-like queries in Haskell
Unit 6 : Organizing code and building Projects
- Lesson 34 Organizing Haskell code with modules
- Lesson 35 Building projects with stack
- Lesson 36 Property testing with QuickCheck
- Lesson 37 Capstone: Building a prime-number library
Unit 7 Practical Haskell
- Lesson 38 Errors in Haskell and the Either type
- Lesson 39 Making HTTP requests in Haskell
- Lesson 40 Working with JSON data using Aeson
- Lesson 41 Using databases in Haskell
- Lesson 42 Efficient, stateful arrays in Haskell