map
> :t map
map :: (a -> b) -> [a] -> [b]
fmap
> :t fmap
fmap :: Functor f => (a -> b) -> f a -> f b
traverse
> :t traverse
traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
mapM
> :t mapM
mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
比較
change values ------------------ a------b a----------b
| | | |
v v v v
map :: (a -> b) -> [a] -> [b]
fmap :: Functor f => (a -> b) -> f a -> f b
traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
mapM :: (Traversable t, Monad m ) => (a -> m b) -> t a -> m (t b)
^ ^
| |
| |
keep structure ---------------- t---------t