The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on the process of crafting programs and the text contains many examples and running case studies, as well as advice an program design, testing, problem solving and how to avoid common pitfalls.
Building on the strengths of the first edition, the book includes many new and improved features:
Complete coverage of Haskell 98, the standard version of Haskell which will be stable and supported by implementations for years to come.
An emphasis on software engineering principles, encouraging a disciplined approach to building reusable libraries of software components.
Detailed coverage of the Hugs interpreter with an appendix covering other implementations.
A running case study of pictures emphasizes the built-in functions which appear in the standard prelude and libraries. It is also used to give an early preview of some of the more complex language features, such as high-order functions.
List comprehensions and the standard functions over lists are covered before recursion.
Early coverage of polymorphism supporting the "toolkit" approach and encouraging the resuse of built-in functions and types.
Extensive reference material containing details of further reading in books, journals and on the World Wide Web.
Accompanying Web Site supporting the book, containing all the program code, further teaching materials and other useful resources.
Computer technology changes with frightening speed; the fundamentals, however, remain remarkably static. The architecture of the standard computer is hardly changed from the machines which were built half acentury ago, even though their size and power are incomparably different from those of today. In programming, modern ideas like object-orientation have taken decades to move from the research environment into the commercial mainstream. In this light, a functional language like Haskell is a relative youngster, but one with a growing influence to play.