In this chapter, we have seen how to write higher-order functions of our own, which can either wrap another function to provide some new feature, alter a function's objective so it will do something else, or even totally new features, such as decoupling methods from objects or creating better finders.
In Chapter 7, Transforming Functions - Currying and Partial Application, we'll still keep working with higher-order functions, and we'll see how to produce specialized versions of existing functions, with predefined arguments, by currying and partial application.