Before trying to answer this question, it might be useful to see the reasons for using Monads along with examples in Phillip Wadler's Monads For Functional Programming[0].<p>From there I like to go to "You could have invented monads!"[1].<p>Then you might want to checkout "Monads as computation"[2].<p>From there look at the huge guide of "All about monads[3].<p>If you are still confused you haven't made enough programs using monads yet. Try taking some of the examples (especially from [0]) and modifying them to do something else.<p>0: <a href="http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf" rel="nofollow">http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/ba...</a><p>1: <a href="http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html" rel="nofollow">http://blog.sigfpe.com/2006/08/you-could-have-invented-monad...</a><p>2: <a href="https://wiki.haskell.org/Monads_as_computation" rel="nofollow">https://wiki.haskell.org/Monads_as_computation</a><p>3: <a href="https://wiki.haskell.org/All_About_Monads#Introduction_2" rel="nofollow">https://wiki.haskell.org/All_About_Monads#Introduction_2</a>
A monad is a device to frighten off newcomers from Haskell and to show your friends that you're smart.<p>Oh, and seriously, it's something mathematical. But no one on the Internet talks about that, so I have no idea, really.