User:Kowey/HaskellRedesign

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
Recursion
Lists

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
  

Monads

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

Advanced Haskell

edit
Arrows
Understanding arrows
Continuation passing style
Functional dependencies
Strictness
Laziness revisited

Fun with Types

edit
Existentially quantified types
Polymorphism
Phantom types
Generalised algebraic data types

Haskell in Practice

edit

Libraries

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

Tutorials

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