From Wikibooks, open books for an open world
Jump to: navigation, search

The Book[edit]

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[edit]

Getting set up
Variables and functions
List basics
Next steps
Type basics

Elementary Haskell[edit]

A Miscellany of Types
List Processing
More on functions
Pattern matching
Control structures
Understanding Haskell indentation rules

Intermediate Haskell[edit]

Simple input and output
Type Declarations
More on Datatypes
Class Declarations
Classes and Types


Understanding monads
Advanced monads
Additive monads (MonadPlus)
Transformers - putting monads together
Monads in practice

Advanced Haskell[edit]

Understanding arrows
Continuation passing style
Functional dependencies
Laziness revisited

Fun with Types[edit]

Existentially quantified types
Phantom types
Generalised algebraic data types

Haskell in Practice[edit]


Modules and libraries
The Hierarchical Libraries
Lists - Arrays - Maybe - Maps
Random Numbers


Building a standalone application
Testing and Debugging
Graphical user interfaces
Database libraries
Distributing your software with the Cabal