Summary
In this chapter, you saw how imperative code (aka OOP code) can be mixed with FP constructs to write implementations of some of the GoF design patterns. Some functional programmers say that the GoF design patterns were conceived as a mechanism to overcome the limitations of an OOP in general (C++ in particular). If a language supports good FP constructs, most pattern implementations are unnecessary. According to our understanding, this view is a bit extreme and a middle path between FP and OOP seems to be a better option. In the coming days, FP idioms will become more and more popular and the progress will be a smooth transition. In the next chapter, we will delve into the nuances of functional reactive programming techniques. This is a very important paradigm where FP and events come together to provide us with frameworks such as .NET Reactive Extensions (Rx).