<br><br><div class="gmail_quote">On Sun, Jan 18, 2009 at 3:23 AM, Andrew Coppin <span dir="ltr">&lt;<a href="mailto:andrewcoppin@btinternet.com">andrewcoppin@btinternet.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Jonathan Cast wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="Ih2E3d">
On Sat, 2009-01-17 at 12:04 +0000, Andrew Coppin wrote:<br>
 &nbsp;<br>
</div><div class="Ih2E3d"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
instance (Monad m) =&gt; Functor m where<br>
 &nbsp;fmap f ma = do a &lt;- ma; return (f a)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;<br>
</blockquote>
While that&#39;s quite interesting from a mathematical point of view, how is this &quot;useful&quot; for programming purposes?<br>
 &nbsp; &nbsp;<br>
</blockquote>
<br>
Good Lord. &nbsp;fmap (as above) is *at least* useful enough to be in the<br>
standard library! &nbsp;(Control.Monad.liftM).<br>
</div></blockquote>
<br>
Given that liftM exists, why is having an identical implementation for fmap useful?</blockquote><div><br></div><div>Because liftM works on Monads and fmap works on Functors?</div><div><br></div><div>I believe you can make data that are Functors but are not Monads.</div>
<div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
<br>
The example that leaps out at me is that (&gt;&gt;=) is identical to concatMap within the list monad. But using lists as a monad is a generally useful thing to do, and being able to substitute arbitrary monads has obvious utility. I&#39;m not seeing how being able to treat something that isn&#39;t a container as if it was a container is useful.</blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div class="Wj3C7c"><br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>