:santagrin: This book was suggested by
pr_tiglao
Book excerpts:
The purpose of this tutorial is not to teach programming, nor even to teach functional programming. Rather, it is intended to serve as a supplement to the
Haskell Report, which is otherwise a rather dense technical exposition. The goal is to provide a gentle introduction to Haskell for someone who has experience with at least one other language, preferably a functional language (even if only an "almost-functional" language such as ML or Scheme).
The Haskell language has evolved significantly since its birth in 1987. This tutorial deals with Haskell 98. Older versions of the language are now obsolete; Haskell users are encouraged to use Haskell 98. There are also many extensions to Haskell 98 that have been widely implemented. These are not yet a formal part of the Haskell language and are not covered in this tutorial.
The general strategy for introducing Haskell language features is this: motivate the idea, define some terms, give some examples, and then point to the Report for details. The readers should however, completely ignore the details until the Gentle Introduction has been completely read. On the other hand, Haskell's Standard Prelude (in Appendix A of the Report and the standard libraries) contain lots of useful examples of Haskell code; readers are encouraged a thorough reading once this tutorial is completed. This will not only give the readers a feel for what real Haskell code looks like, but will also familiarize them with Haskell's standard set of predefined functions and types.
Finally, the Haskell web site, http://www.haskell.org/ , has a wealth of information about the Haskell language and its implementations.