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