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 their...