In this chapter, we have learned how to create new functions by joining several other functions in different ways through pipelining and composition. We also looked at fluent interfaces, which apply chaining, and transducing, a way to compose reducers in order to get higher speed sequences of transformations. With these methods, you'll be able to create new functions out of existing ones and keep programming in the declarative way we've been favoring.
In Chapter 9, Designing Functions – Recursion, we will move on to function design and study the usage of recursion, which is a basic tool in functional programming and allows for very clean algorithm designs.