Classical design patterns in a functional paradigm
Anyone who has programmed in an object-oriented language will encounter design patterns at some point. Design patterns are a type of cookie-cutter solution to common engineering problems. One key point is that the solution they provide should be thought of as a starting point, a way to tackle a problem that has proven itself to be useful. Often, the solution is not readily usable out of the box and needs to be adapted to your concrete environment and situation. A given design pattern might provide 90% of a solution to a problem, and the remaining 10% is filled in with custom, non-pattern code.
This chapter does not aim to exhaustively cover design patterns. In fact, entire books have been written about design patterns, such as the well-known Gang of Four book, Design Patterns: Elements of Reusable Object-Oriented Software. What this chapter does aim to do is to showcase how certain object-oriented design patterns translate to the...