map :: (a -> b) -> [a] -> [b]
fmap :: Functor f => (a -> b) -> f a -> f b
liftM :: Monad m => (a -> b) -> m a -> m b
Warum haben wir drei verschiedene Funktionen, die im Wesentlichen dasselbe tun?
mapund liftMsollte mit Sicherheit genau das Gleiche tun wie fmap.
fmapund liftMgenau das Gleiche tun, ist dies mapnatürlich nur ein Sonderfall, dh etwas anderes. fmap id getLineist gut getippt, wohingegen map id getLinees nicht ist.