<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 20 Dec 2012, at 14:07, Trung Quang Nguyen <<a href="mailto:trungnq97@gmail.com">trungnq97@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><font color="#333333"><font><font face="trebuchet ms,sans-serif">Hi all,</font></font></font><div><font color="#333333"><font><font face="trebuchet ms,sans-serif"><br></font></font></font></div><div><font color="#333333"><font><font face="trebuchet ms,sans-serif">I saw this</font></font></font></div>
<div><font color="#333333"><font><font face="trebuchet ms,sans-serif"><br></font></font></font></div><div><ol start="1" class="" style="padding:0px;border:none;outline:0px;font-size:14px;vertical-align:baseline;background-color:rgb(0,0,0);color:rgb(92,92,92);font-family:Consolas,monospace;line-height:25px;margin:0px 0px 1px!important;list-style:none!important">
<li class="" style="border:0px;outline:0px;vertical-align:baseline;background-color:inherit;color:inherit;line-height:18px;margin:0px!important;padding:0px 3px!important;list-style:none!important"><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:white;background-color:inherit"><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(149,228,84);background-color:inherit;font-weight:bold">instance</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Monad</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Maybe</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(149,228,84);background-color:inherit;font-weight:bold">where</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> </span></span></li>
<li class="" style="border:0px;outline:0px;vertical-align:baseline;background-color:inherit;line-height:18px;margin:0px!important;padding:0px 3px!important;list-style:none!important"><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:white;background-color:inherit"> return x<span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(138,198,242);background-color:inherit"> = </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Just</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> x </span></span></li>
<li class="" style="border:0px;outline:0px;vertical-align:baseline;background-color:inherit;color:inherit;line-height:18px;margin:0px!important;padding:0px 3px!important;list-style:none!important"><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:white;background-color:inherit"> <span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Nothing</span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(138,198,242);background-color:inherit"> >>= </span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">f</span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(138,198,242);background-color:inherit"> = </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Nothing</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> </span></span></li>
<li class="" style="border:0px;outline:0px;vertical-align:baseline;background-color:inherit;line-height:18px;margin:0px!important;padding:0px 3px!important;list-style:none!important"><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:white;background-color:inherit"> <span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Just</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> x</span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(138,198,242);background-color:inherit"> >>= </span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">f </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(138,198,242);background-color:inherit"> = </span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">f x </span></span></li>
<li class="" style="border:0px;outline:0px;vertical-align:baseline;background-color:inherit;color:inherit;line-height:18px;margin:0px!important;padding:0px 3px!important;list-style:none!important"><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:white;background-color:inherit"> fail _<span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;color:rgb(138,198,242);background-color:inherit"> = </span><span class="" style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit">Nothing</span><span style="margin:0px;padding:0px;border:none;outline:0px;vertical-align:baseline;background-color:inherit"> </span></span></li>
</ol><div><br></div><div style="">I am wondering about the implementation of function (>>=). Why don't it be <b>Just x >>= f = Just (f x)</b>?</div><div><br></div><div style="">Any body knows about this?</div></div></div></blockquote><br></div><div>The reason is in the type of bind:</div><div><br></div><div>(>>=) :: Monad m => m a -> (a -> m b) -> m b</div><div><br></div><div>The function f takes a non-in-a-monad value, and gives you an in-a-monad value.</div><div><br></div><div>Bob</div><br></body></html>