The Unreasonable Effectiveness of Monads
Key takeaways
- Structured abstractions give us an ability to easily reason about -- and reuse -- our code
- The related abstractions in the functor tower (functors, applicative, selectives, and monads)
- Monads in particular are popular in some circles because they hit a sweet spot for many programming use cases
- These are practical and can start being used today in (most) modern langauges
Much ink has been spilled on what a monad is, but why do people care? As an abstraction, monads hit a sweet spot between being very general while letting the developer retain a lot of control, but this is often hand-waved over. In this talk explores the foundations of this useful abstraction (bootstrapping up from the familiar map function), and what it means for everyday programming tasks, code reuse, testing, and overall code architecture. Examples will be given in both strongly typed (Haskell) and weak/unityped (Elixir) languages.