The Functional Approach to Programming by Guy Cousineau and Michel Mauny, Cambridge University Press, 1998, ISBN 0-521-57681-4 pbk, xiv+445pp.

The Functional Approach to Programming has been written for a fairly sophisticated audience with a good understanding of programming (but not necessarily functional programming), data structures, compilers, semantics and computer graphics. The book originated from material for a course by one of the authors. It covers a wide range of topics, but in spite of the size of the book I found the coverage sometimes a little unsatisfactory because (1) a fair number of the programming examples are not discussed in depth, (2) some of the design decisions are not well motivated, and (3) there is no emphasis on program design. This is a professional English translation of a French book. Unfortunately, some of the jargon has been literally translated. For example, the book uses type synthesis where type inference would be more appropriate, convergent instead of confluent, delayed evaluation instead of normal order evaluation, ascendant analysis instead of bottom-up analysis, etc. There are indications that the programming examples have also been translated with the risk of introducing errors. A related issue is the choice of names for certain standard operations. For example, where an English text would use reduce or foldr, the Functional Approach to Programming uses list_it. The book has 13 chapters, which are grouped into three parts as discussed below. The text provides some exercises, with a pointer to the authors’ web site for answers. The bibliography is adequate, but could have been more extensive. Each chapter is concluded by a summary and a section entitled ‘To learn more’. I found this a nice feature of the book.