Richard Bird is famed for the clarity and rigour of his writing. His new textbook, which introduces functional programming to students, emphasises fundamental techniques for reasoning mathematically about functional programs. By studying the underlying equational laws, the book enables students to apply calculational reasoning to their programs, both to understand their properties and to make them more efficient. The book has been designed to fit a first- or second-year undergraduate course and is a thorough overhaul and replacement of his earlier textbooks. It features case studies in Sudoku and pretty-printing, and over 100 carefully selected exercises with solutions. This engaging text will be welcomed by students and teachers alike.
His approach of calculating algorithms by performing algebraic transformations is very interesting.
It attracted some interest during the 80s and 90s, but it has faded away as it's too tough to be followed by a human. I wonder if it could benefit from some automation by using e.g. modern synthesis techniques.
It is very much an introductory text to programming, something that can be picked by someone who has an inclination to the craft but with no prior experience. It doesn't even get into Haskell's powerful type system and sticks to primitives and lists. The intention is to teach the building blocks of programming through small, pure functions.
The text is very conversational, chapters are short and sweet, and have a lot of bite-sized exercises along with their answers which will greatly help a self-learner. It will also be easy to evaluate since functional code don't tend to get very verbose.
[0] https://www.cs.ox.ac.uk/publications/books/functional/
[1] https://www.safaribooksonline.com/library/view/thinking-func...