The book presents the mathematical view and tools of computer programming with broad and friendly context. It explains the basic concepts such as recursion, computation model, types, data, and etc. The book serves as an introductory and reference guide to the engineers, students, researchers, and professionals who are interested in functional programming, type system, and computer programming languages.
The book covers seven topics. Firstly, it lays out the number system based on Peano Axioms and demonstrates the isomorphic computer data structures. Then, it introduces Lambda calculus as a computing model and recursion, an important programming structure, with the Y-combinator. It next presents the basic abstract algebra, including group and fields, and provides a friendly introduction to Galois theory. After that, it uses category theory as a tool to explain several concepts in computer programming, including the type system, polymorphism, null handler, and recursive data types, then followed by an application of program optimization. In the last two chapters, the author shows how to program with the concept of infinity through stream and lazy evaluation, and then explains the naïve set theory and transfinite numbers, from which the logic paradox arises. Finally, it introduces four historical views of mathematical foundation, as well as Gödel’s incompleteness theorems developed in 1930s, and how they define the boundaries of computer programming. Additionally, the book provides biographies, stories, and anecdotes of 25 mathematicians, along with over 130 exercises and their corresponding answers.
Table of Content
Chapter 1 Numbers.- Chapter 2 Recursion.- Chapter 3 Symmetry.- Chapter 4 Category.- Chapter 5 Fusion.- Chapter 6 Infinity.- Chapter 7 Paradox.
About the author
Xinyu Liu is a senior manager in the software engineering team at Amazon, where he leads to build multiple distribution software systems for fulfilment and supply-chain technology. He graduated and received his master degree from Tsinghua University in 2002. His main interests are functional algorithm and data structures, mathematics, and logic foundations of programming.