List of Figures

 

Chapter 1. What is functional programming?

Figure 1.1. A flow chart representing an imperative program as a process that occurs in time. Various things are transformed and states are mutated until the result is obtained.

Figure 1.2. Comparing a program that’s referentially transparent to one that’s not

Figure 1.3. Replacing referentially transparent expressions with their values doesn’t change the overall meaning.

Chapter 2. Using functions in Java

Figure 2.1. All elements of a function’s domain must have one and only one corresponding element in the codomain.

Figure 2.2. Replacing anonymous classes with lambdas

Figure 2.3. Pay attention to the order of type parameters.

Figure 2.4. Functions in their anonymous form

Chapter 3. Making Java more functional

Figure 3.1. Changes to the Result interface

Chapter 5. Data handling with lists

Figure 5.1. Different types of lists offer different types of access to their elements.

Figure 5.2. Removing and adding elements without mutation or copying

Figure 5.3. The representation of the singly linked list implementation

Figure 5.4. Dropping the n first elements of a list while not mutating or creating anything.

Figure 5.5. Without object notation, composed functions may be difficult to read. Using object notation results in much more readable code.