In this chapter, we learned about how we can use the techniques from Reactive Programming we have about learned so far to write code that is cleaner and easier to maintain. To do so, we insisted on thinking about asynchronous events simply as lists and saw how that way of thinking lends itself quite easily to being modeled as an event stream. All our game has to do, then, is operate on these streams using familiar sequence processing functions.
We also learned about the basics of Reagi, a framework for CES, similar to the one we created in Chapter 5, Creating Your Own CES Framework with core.async, but that is more feature-rich and robust.
In the next chapter, we will take a break from CES and look at how a more traditional reactive approach based on data flows can be useful.