  The textbook by Doets and van Eijck puts the Haskell programming language
systematically to work for presenting a major piece of logic and mathematics.
The reader is taken through chapters on basic logic, proof recipes, sets and
lists, relations and functions, recursion and co-recursion, the number systems,
polynomials and power series, ending with Cantor's infinities. The book uses
Haskell for the executable and strongly typed manifestation of various
mathematical notions at the level of declarative programming. The book adopts a
systematic but relaxed mathematical style (definition, example, exercise, ...);
the text is very pleasant to read due to a small amount of anecdotal
information, and due to the fact that definitions are fluently integrated in
the running text. An important goal of the book is to get the reader acquainted
with reasoning about programs.
