Summary
This chapter introduced some semantics of functional programming and how they apply these to Python code. This is by no means a complete guide to functional programming, but it covers everything that is needed to start out with functional programming: lambdas, closures, side effects, pure functions, and higher-order functions.
You should now have all the key elements to start writing functional and reactive applications. Hopefully, just like the many JavaScript developers using it today, you will find the architecture proposed in this chapter elegant, easy to use once you have the correct mindset, and scalable (in term of code size).
The application of this architecture on the echo server showed you how to solve real-life challenges, such as observable cycles. Moreover, by keeping the application logic pure, it becomes easy to add new features by implementing new components and using them through composition. Another benefit of this architecture that was not detailed here, however, is that testing the application logic is easy since it is pure. Many difficulties in unit testing come from side effects that are not present in this code. A typical benefit of testing a pure function is that you never need mocks, but just provide input arguments and check the return value.
The next chapter will cover in detail how observables and observers work. It will explain the different ways to create observables, how to subscribe to them, and how to unsubscribe from them. It will also explain the different types of observables, which has not been discussed yet.