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