This book is divided into two tracks. The beginner's track (left) will introduce you to the very basics of the language and some of most frequently used libraries. This will enable you to build simple programs and prepare you for the advanced track. The advanced track (right) introduces functional programming concepts like monads, some new features of Haskell, such as Generalised Algebraic Data Types. At the very end of this book, we also have a set of chapters on the more day-to-day issues of working with Haskell, issues such as making use of the stardard library, building graphical interfaces or working with databases. You should be able to jump directly to this chapter from the basic track.
Please contribute! Everyone, regardless of Haskell competency, can help out. Spend five minutes improving a module and save someone else hours of time. Check out the notes for contributors.
Haskell Basics
- Getting set up
- Variables and functions
- List basics
- Next steps
- Type basics
- Recursion
- Lists
|
Elementary Haskell
- A Miscellany of Types
- List Processing
- More on functions
- Pattern matching
- Control structures
- Understanding Haskell indentation rules
|
Intermediate Haskell
- Simple input and output
- Type Declarations
- More on Datatypes
- Class Declarations
- Classes and Types
|
|
|
Monads
- Understanding monads
- Advanced monads
- Additive monads (MonadPlus)
- Transformers - putting monads together
- Monads in practice
|
Advanced Haskell
- Arrows
- Understanding arrows
- Continuation passing style
- Functional dependencies
- Strictness
- Laziness revisited
|
Fun with Types
- Existentially quantified types
- Polymorphism
- Phantom types
- Generalised algebraic data types
|
|