Functor, Applicative, and Monad
An important realization that I had was that monads&#x2F;functors&#x2F;applicatives aren&#x27;t patterns in the sense of design patterns. You don&#x27;t solve a singular problem with a monad. With something like a strategy pattern you have a concrete problem: how do I select different potential algorithms? Monads don&#x27;t have a specific problem that they solve. Any attempt to motivate monads in such a manner falls flat because the problem is either too general to be motivating or too specific to apply to monads as a whole.<p>Instead, functors&#x2F;monads&#x2F;applicatives are more like a technique that can be used to solve a wide variety of problems that all coincidentally use the same function signature. And therefore, it&#x27;s perfectly acceptable to say &quot;I know how monads work with Maybe and List, but not Reader&quot; Because fundamentally, how a Reader implements bind is in no way related to how Maybe or List implement bind.