Diminishing patterns
Similarly to SOLID principles, many OOP design patterns in the context of idiomatic functional-first F# either diminish (sometimes to the extent of disappearing) or significantly morph. Let's take a quick look at some instances of such transformation. I will be using samples taken from the code base I authored, implementing payment applications for Jet.com. Samples are somewhat simplified to align with the book format.
The Command design pattern
The Command Design Pattern (https://en.wikipedia.org/wiki/Command_pattern) in OOP stands for a behavioral design pattern where all the information required to perform an action at a later time is encapsulated in an object. But wait a minute; doesn't this exactly coincide with what a function is? That's right; almost any idiomatic F# pattern of dealing with a higher-order function to traverse a data structure while applying a lower-order function to each element can be considered an occurrence of the Command pattern...