map :: (a -> b) -> [a] -> [b]
fmap :: Functor f => (a -> b) -> f a -> f b
liftM :: Monad m => (a -> b) -> m a -> m b
Pourquoi avons-nous trois fonctions différentes qui font essentiellement la même chose?
map
et liftM
devraient certainement faire exactement la même chose que fmap
.
fmap
et liftM
faire exactement la même chose, map
bien sûr, ce n'est qu'un cas particulier, c'est-à-dire quelque chose de différent. fmap id getLine
est bien typé, alors que ce map id getLine
n'est pas le cas.