查看<img src="somesite.com/1.jpg" />
函数:
mapM
如您所见,结果是在monad上下文中
什么是class (Functor t, Foldable t) => Traversable (t :: * -> *) where
...
mapM :: Monad m => (a -> m b) -> t a -> m (t b)
包裹在monad中的意义?我能得到什么样的力量?
答案 0 :(得分:3)
我认为,这不是权力,而是实用性。
您可以map
使用某些action :: a -> m b
,但之后您会获得[m b]
(如果我们暂时忘记了Traversable
)。 mapM
基本相同,但也会通过按顺序执行每个操作并收集结果,将[m b]
转换为m [b]
。最后一个操作称为sequence
,BTW。