u/PM_ME_UR_OBSIDIANin r/compsci • Recommends
On “Design Patterns for Humans”
IMHO, OOP design patterns lack a punch compared to functional design patterns. Compare and contrast:
- The Actor Model for concurrency;
- Higher-order combinators for collections (`.map`, `.fold`, `.choose`, `.collect`, ...) which are the ancestor of LINQ;
- ~~Monads~~ Burritos;
- Applicatives, used for example in `optparse-applicative`;
- Free structures as DSLs, particularly free monads and free applicatives;
...and probably many more which I forget right now.
These are effective solutions to some very hard problems in software engineering, mostly relating to separation of concerns and testability.