We had such an interesting journey in this chapter! We managed to link two styles of design that seem disjointed—OOP and functional programming, in a very elegant manner. Pure functions can be grouped into classes based on the principle of cohesion. We just need to exercise our imagination and think of scenarios in which functions might change, and decide which functions to group together. Reversely, we can always move functions from a class into multiple lambdas by making them pure and reversing the partial application.
There is no friction between OOP and functional programming; they are just two different ways of structuring the code that implements features.
Our journey into software design using functions has not finished yet. In the next chapter, we will discuss how to design functions using test-driven development (TDD).