[Haskell-cafe] Functors [Comments from OCaml Hacker Brian Hurt]

David Leimbach leimy2k at gmail.com
Sun Jan 18 12:24:07 EST 2009


On Sun, Jan 18, 2009 at 3:23 AM, Andrew Coppin
<andrewcoppin at btinternet.com>wrote:

> Jonathan Cast wrote:
>
>> On Sat, 2009-01-17 at 12:04 +0000, Andrew Coppin wrote:
>>
>>
>>>
>>>  instance (Monad m) => Functor m where
>>>>  fmap f ma = do a <- ma; return (f a)
>>>>
>>>>
>>> While that's quite interesting from a mathematical point of view, how is
>>> this "useful" for programming purposes?
>>>
>>>
>>
>> Good Lord.  fmap (as above) is *at least* useful enough to be in the
>> standard library!  (Control.Monad.liftM).
>>
>
> Given that liftM exists, why is having an identical implementation for fmap
> useful?


Because liftM works on Monads and fmap works on Functors?

I believe you can make data that are Functors but are not Monads.


>
>
> The example that leaps out at me is that (>>=) 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'm not seeing how being able to treat something that isn't a
> container as if it was a container is useful.


>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090118/1e861115/attachment.htm


More information about the Haskell-Cafe mailing list