Functional programming and Monads are a bit complex, and took me a while to understand. Surely, they're very different than OOP. So, I'd like to recommend Mike's World-O-Programming's "Yet Another Monad Tutorial" (http://mvanier.livejournal.com/3917.html) as one of the best explanations for Monads. The step-by-step approach allows the reader to decide where to skip because "it's clear as water", and where to re-read and digest very slowly the harder parts. And maybe each person finds a different part hard.