Contents
Contents
Preface
Introducing functional programming
Getting started with Haskell and GHCi
Basic types and definitions
Designing and writing programs
Data types, tuples and lists
Programming with lists
Defining functions over lists
Playing the game: I/O in Haskell
Reasoning about programs
Generalization: patterns of computation
Higher-order functions
Developing higher-order programs
Overloading, type classes and type checking
Algebraic types
Case study: Huffman codes
Abstract data types
Lazy programming
Programming with monads
Domain-Specific Languages
Time and space behaviour
Conclusion
Appendices