Learn Haskell
My tutorials
| November 22, 2019 | Haskell generics explained |
| November 22, 2019 | GHC optimization and fusion |
| March 3, 2019 | Exceptions tutorial |
| February 23, 2019 | Megaparsec tutorial |
| December 24, 2017 | Template Haskell tutorial |
Recommended tutorials
| Getting started | What I wish I knew when learning Haskell |
| Getting started | Learn Haskell by building a blog generator |
| Language extensions | A guide to GHC's extensions |
| Design | Type safety back and forth |
| Type classes | Scrap your type classes |
| Effect systems | Introduction to effect systems in Haskell |
| Effect systems | effectful: a guide to the effect system |
| Optics | Optics by Example (introduction) |
| Optics | Lenses, Folds, and Traversals |
| Testing | An introduction to QuickCheck and property-based testing |
| Performance | The Haskell inlining and specialization FAQ |
| Type-level programming | Basic type level programming in Haskell |
| Type-level programming | Haskell's kind system - a primer |
| Generics | Applying type-level and generic programming in Haskell |
| Dependent types | Introduction to singletons |
| Command line options | Optparse applicative tutorial |
| Tooling | The GHC User's Guide |