Problem is that from the idea Functor is a superclass of Monad, with the
property that "fmap == liftM".

[cut]

The second relation can even not be expressed in Haskell 98.

Erm...

class Functor f where
    fmap :: (a -> b) -> f a -> f b
class Functor m => Monad m where
    return :: a -> m a
    join :: m (m a) -> m a
bind :: Monad m => m a -> (a -> m b) -> m b
bind mx f = join $ fmap f mx

Now liftM must be exactly equal to fmap.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to