[Haskell-cafe] Functors [Comments from OCaml Hacker Brian Hurt]
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
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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe