The Absolute Best Intro to Monads For Software Engineers