Chapter 2. Putting the Function in Functional Programming
In the first chapter, the basic concept of functions and how they are supported by lambda expressions in Java 8 were introduced. In this chapter, we will cover lambda expressions in more depth. We will explain how they satisfy the mathematical definition of a function and how we can use them in supporting Java applications.
In this chapter, you will cover several topics, including:
- Lambda expression syntax and type inference
- High-order, pure, and first-class functions
- Referential transparency
- Closure and currying
- Common functional interfaces
Our discussions cover high-order functions, first-class functions, and pure functions. Also examined are the concepts of referential transparency, closure, and currying. Examples of nonfunctional approaches are followed by their functional equivalent where practical.
While we used lambda expression extensively in our examples, in the last part of this chapter, a little time will be spent examining...