Monads are a super-important concept in functional programming, and in languages like Haskell, they’re pretty much the only way you can do things like I/O.
Despite their role in functional programming, monads are a pain to explain and understand. Google “monad,” and you’ll see a ton of bloggers taking a crack at trying to break the concept down. For the most part, they haven’t been helpful to me.
Then, I came across the video above, and monads finally started to make sense to me! Not only did the video help me get a better handle on what monads are and why they’re crucial, it also shed some light on why functional programming is the way it is, and the decisions that went into designing things like Haskell, Clojure, and even .NET Linq!
I’m sharing it, in the hopes that it helps you as well.