mapM
定義
code:hs
mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
mapM f = unwrapMonad . traverse (WrapMonad . f)
こう書いても同じ
code:hs
mapM f xs = sequence $ fmap f xs
データ構造tと計算コンテナmを入れ替えている
a -> m bにt aを適用するとt (m b)になるが、結果はm (t b)である
mamM_ :: (Monad m) => (a -> m b) -> [a] -> m [b]
code:hs
読もう