This book's goals are to integrate logical thinking into computer programming and to teach logic and mathematical reasoning in a practical setting. Haskell, a programming language from the Lisp family, will be our instrument for this.
Haskell became the de facto standard for lazy functional programming in the past ten years. In this programming approach, arguments are only evaluated when the value is actually required. In contrast to the prescriptive programming seen in languages like C or Java, functional programming is a type of descriptive programming. The lambda calculus, a logical theory of computable functions, serves as the foundation for Haskell.