包裹在monad中的优势

时间:2017-10-25 12:57:10

标签: haskell monads

查看<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中的意义?我能得到什么样的力量?

1 个答案:

答案 0 :(得分:3)

我认为,这不是权力,而是实用性。

您可以map使用某些action :: a -> m b,但之后您会获得[m b](如果我们暂时忘记了Traversable)。 mapM基本相同,但也会通过按顺序执行每个操作并收集结果,将[m b]转换为m [b]。最后一个操作称为sequence,BTW。