Jump to content

User:Kowey/HaskellRedesign

From Wikibooks, open books for an open world

The Book

[edit | edit source]

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 | edit source]
Getting set up
Variables and functions
List basics
Next steps
Type basics
Recursion
Lists

Elementary Haskell

[edit | edit source]
A Miscellany of Types
List Processing
More on functions
Pattern matching
Control structures
Understanding Haskell indentation rules

Intermediate Haskell

[edit | edit source]
Simple input and output
Type Declarations
More on Datatypes
Class Declarations
Classes and Types
  

Monads

[edit | edit source]
Understanding monads
Advanced monads
Additive monads (MonadPlus)
Transformers - putting monads together
Monads in practice

Advanced Haskell

[edit | edit source]
Arrows
Understanding arrows
Continuation passing style
Functional dependencies
Strictness
Laziness revisited

Fun with Types

[edit | edit source]
Existentially quantified types
Polymorphism
Phantom types
Generalised algebraic data types

Haskell in Practice

[edit | edit source]

Libraries

[edit | edit source]
Modules and libraries
The Hierarchical Libraries
Lists - Arrays - Maybe - Maps
Random Numbers
  

Tutorials

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