On Sun, Dec 26, 2010 at 2:00 PM, michael rice <span dir="ltr">&lt;<a href="mailto:nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;</span> wrote: <div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font:inherit">instance Monad m =&gt; MonadPlus (MaybeT m) where<br>    mzero     = MaybeT $ return Nothing<br>    mplus x y = MaybeT $ do maybe_value &lt;- runMaybeT x<br>
                            case maybe_value
 of<br>                                 Nothing    -&gt; runMaybeT y<br>                                 Just value -&gt; runMaybeT x<br></td></tr></tbody></table></blockquote><div><br></div><div>The last line is wrong. It should be, &quot;Just value -&gt; return value&quot;. But that doesn&#39;t cause the problem.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font:inherit">instance Show (MaybeT m a)<br>
</td></tr></tbody></table></blockquote><div><br></div><div>This is never valid. You&#39;ve defined show, shows, and showsPrec in terms of each other, creating unbounded recursion. Delete it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font:inherit">*Main&gt; askPassword<br>Loading package transformers-0.2.2.0 ... linking ... done.<br>*** Exception: stack overflow<br></td>
</tr></tbody></table></blockquote><div><br></div><div>This triggers the unbounded recursion, when it tries to show askPassword. Note that there is no way to show IO values, so there&#39;s no way to show MaybeT IO values.</div>
<div><br></div><div>Instead, use runMaybeT askPassword</div></div><br>-- <br>Dave Menendez &lt;<a href="mailto:dave@zednenem.com">dave@zednenem.com</a>&gt;<br>&lt;<a href="http://www.eyrie.org/~zednenem/">http://www.eyrie.org/~zednenem/</a>&gt;<br>