【发布时间】:2016-10-20 06:54:07
【问题描述】:
我想知道,你说 flatMap 是 monad 的 bind 方法。 bind 方法接受一个将 monad 包含的项目映射到另一个 monad 的函数。就是这样
option.flatMap(item => another option (f(item)))
给了我另一个带有f(item) 的单子。但是,应用于 List 意味着什么?通过简单的扩展,如果您将每个 List 项目映射到一个 (list) monad,您将获得整个列表列表。为什么bind 应用于列表时会使结果变平?
【问题讨论】:
-
“到另一个 monad”应该读作“……将包含的项目映射到同一个 monad 的容器”
标签: functional-programming bind monads flatmap