After the success of the first edition, Introduction to Functional Programming using Haskell has been thoroughly updated and revised to provide a complete grounding in the principles and techniques of programming with functions. The second edition uses the popular language Haskell to express functional programs. There are new chapters on program optimisation, abstract datatypes in a functional setting, and programming in a monadic style. There are complete new case studies, and many new exercises. As in the first edition, there is an emphasis on the fundamental techniques for reasoning about functional programs, and for deriving them systematically from their specifications. The book is self-contained, assuming no prior knowledge of programming and is suitable as an introductory undergraduate text for first- or second-year students.
Prof. Richard Simpson Bird is a computer scientist.
There are other authors named Richard Bird: * Richard Bird — a horticultural expert and gardening author * Richard Bird — a contemporary author * Richard Bird — an early 20th-century author
One of the most inspiring CS book I've ever read. The Elm / Redux pattern we are embracing today is actually introduced 30 years ago in this very book.
Bird and Wadler (1st ed.) is one of two classic introductions to computer science, the other being SICP.
That said, SICP is a comprehensive overview of the essence of computer science narrated using Scheme and functional programming, while Bird and Wadler is a tutorial in functional abstractions and type-directed programming through Miranda, a precursor to Haskell. Both are must reads for anyone who wants to learn to program *the right way*, and they complement each other nicely.
Read the first edition, since subsequent editions are rewritten more in the "programming language overview" style.
I highly recommend the book to anybody looking for a solid base of functional programming theory. The book can be dense at parts, and it is packed with information. The author touches on a wide variety of topics, from the basics about data types, to λ-calculus, domain theory, program derivation, functional data structures, time analysis, folds... the list is extensive. The focus is mainly on the theoretical side, being many of the exercises proofs.
The four instead of five stars is because, unfortunately, it is not as self-contained as it claims to be, and some of the exercises can't be tackled with only the introduction to the topic given by the author.
It is also a 1998 book, meaning some things are outdated. It was released before the Haskell 98 report was finished, and we are already using the Haskell 2010 report, while a new one is in the making. Of course, more recent topics like idioms (applicative functors) aren't touched upon.
All in all, it is an excellent book with which to hone theory, and for that I can't recommend it enough. For more practical matters, I'd recommend Haskell Programming: From First Principles
I read first edition, third or later printing. Quite complete. Highly recommended for learning from scratch if you're a programmer, although this book doesn't teach with Haskell examples due to the date (this book was published in 1988 while Haskell 1.0 in 1990). Too bad it doesn't teach monads, since the rest of topics are so well explained.
A pretty nice introduction to functional programming, but it had been great if it also had some more advanced topics. I liked the mathematical approach of constructing concepts from very simple properties and laws.
[1st Edition]Was a freshman year textbook used fir introducing Functional Programming at the Computer Science department at the University of Twente in 1994. After many years I still think something like [x^2| x<- 0...1000] is a brilliant succinct notation that is missing from OO languages such as Java. It uses a Functional Language that looks Like Miranda. Nowadays probably Haskell would be used. Still a good book. And Miranda although outdated can still be run if you have something that runs Solaris (Ilumnios). I probably should read it again but If I recall well Monads and Lenses were not explicitly explained in book or course. I think I should have read it better in 1994. Must do a quick reread. In 2016 I met Philip Wadler, one of the authors, on the Joy of Coding conference where he kindly signed my copy of this book. Same guy who also brought you generics with type erasure in Java. Look up some of his presentations on YouTube
Comprehensive, readable, and demanding. Language-agnostic to the extent that most code can be easily translated to most modern functional programming languages. However, the use of explicit partial computations and lazy evaluation makes it harder to follow examples, and complicates the program cost model and proofs by structural induction. As a strong point, the technique of program specification and derivation by inverse functions is elegantly described, easily mechanized, and of lasting value.
While set up as an introductory book to languages of the Haskell family, the book actually has a fair share of theory which modern tutorials of Haskell lack. It presents a simple model of evaluation, discusses efficiency (e.g., foldl vs foldr) and is rich in examples of equational reasoning through derivation of functions from their specifications.