你能告诉我mapM和之间是否存在一些差异forM?看签名:
mapM :: Monad m => (a -> m b) -> [a] -> m [b]
forM :: Monad m => [a] -> (a -> m b) -> m [b]
Run Code Online (Sandbox Code Playgroud)
唯一的问题是参数的顺序.这是不可取的,但它真的只是区别吗?
forM被定义为flip mapM在base:
-- | 'forM' is 'mapM' with its arguments flipped. For a version that
-- ignores the results see 'Data.Foldable.forM_'.
forM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
{-# INLINE forM #-}
forM = flip mapM
Run Code Online (Sandbox Code Playgroud)