<br>Last night I was thinking on what makes monads so hard to take, and came to a conclusion: the lack of a guided tour on the implemented monads.<br><br>Let&#39;s take the Writer monad documentation: all it says is:<br><br>
Inspired by the paper &quot;Functional Programming with Overloading and Higher-Order Polymorphism&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mark P Jones (<a href="http://web.cecs.pdx.edu/~mpj/pubs/springschool.html">http://web.cecs.pdx.edu/~mpj/pubs/springschool.html</a>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Advanced School of Functional Programming, 1995.<br><br>SO WHAT?<br><br>The best approach is the Part II of the &quot;All About Monads&quot; tutorial. There you have the almost ideal approach, except that the examples are just thrown there, with no step-by-step explanation.<br>
<br>Of course one could copy, paste and run it, but this gives pretty much a &quot;is it right?&#39;&nbsp; feeling. Questions like &quot;if a Reader is an application, why don&#39;t use a regular function instead?&quot; or &quot;what bind means for a State monad?&quot;.<br>
<br>I will try to work on a &quot;Part II&quot; extended version on my vacations... maybe a WikiMonad... or MonadPedia... :-)<br><br>After all, it is my duty as a haskell noob to write another monad tutorial! :D<br><br>Cheers!<br clear="all">
<br>-- <br>Rafael Gustavo da Cunha Pereira Pinto<br>Electronic Engineer, MSc.<br>