<div dir="ltr"><a class="" href="http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:fmap" style="color:rgb(34,0,193);font-family:sans-serif;font-size:16px"><b>fmap</b></a><a class="" href="http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:fmap" style="text-decoration:initial;color:black;font-family:sans-serif;font-size:16px"> :: Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b</a><font color="#333333"><font><font face="trebuchet ms,sans-serif"><br>
</font></font></font><div><span style="font-family:arial,sans-serif;font-size:13px">fmap f (Just a)      = Just (f a)</span><br></div><div><br></div><div style><font face="arial, sans-serif">We wrap Just around (f a) because f return a value with type b instead (Just b).</font></div>
<div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">But in</font></div><div style><a class="" href="http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:-62--62--61-" style="color:rgb(34,0,193);font-family:sans-serif;font-size:16px">(<b>&gt;&gt;=</b>)</a><a class="" href="http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:-62--62--61-" style="text-decoration:initial;color:black;font-family:sans-serif;font-size:16px"> :: Monad m =&gt; m a -&gt; (a -&gt; m b) -&gt; m b</a><font face="arial, sans-serif"><br>
</font></div><div style><span style="font-family:arial,sans-serif;font-size:13px">Just x &gt;&gt;= f  = f x</span><br></div><div style><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div style>
We don&#39;t need to wrap Just around (f a) because f return (Just b).</div><div style><br></div><div style>--Trung</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2012/12/20 Miguel Negrao <span dir="ltr">&lt;<a href="mailto:miguel.negrao-lists@friendlyvirus.org" target="_blank">miguel.negrao-lists@friendlyvirus.org</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
A 20/12/2012, às 14:07, Trung Quang Nguyen escreveu:<br>
<div><div class="h5"><br>
&gt; Hi all,<br>
&gt;<br>
&gt; I saw this<br>
&gt;<br>
&gt;       • instance Monad Maybe where<br>
&gt;       •     return x = Just x<br>
&gt;       •     Nothing &gt;&gt;= f = Nothing<br>
&gt;       •     Just x &gt;&gt;= f  = f x<br>
&gt;       •     fail _ = Nothing<br>
&gt;<br>
&gt; I am wondering about the implementation of function (&gt;&gt;=). Why don&#39;t it be Just x &gt;&gt;= f = Just (f x)?<br>
&gt;<br>
&gt; Any body knows about this?<br>
<br>
</div></div>That would be the implementation of fmap for Maybe:<br>
<br>
instance  Functor Maybe  where<br>
    fmap _ Nothing       = Nothing<br>
    fmap f (Just a)      = Just (f a)<br>
<br>
so, different behavior.<br>
<br>
best,<br>
Miguel<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><b>Trung Nguyen</b><div>Mobile: +45 50 11 10 63<br><div>LinkedIn: <a href="http://www.linkedin.com/pub/trung-nguyen/36/a44/187" target="_blank">http://www.linkedin.com/pub/trung-nguyen/36/a44/187</a></div>
<div>View my blog at <a href="http://www.onextrabit.com/" target="_blank">http://www.onextrabit.com/</a></div><div><br></div></div>
</div>