也许Monad:为什么flatMap是平坦的?

时间:2018-08-28 20:12:38

标签: typescript functional-programming monads

在阅读了有关Typescript中monads的精彩文章之后: https://codewithstyle.info/advanced-functional-programming-in-typescript-maybe-monad/ 我觉得我已经掌握了除此问题以外的所有内容。

有人能解释为什么flatMap()map()一样平坦,因为唯一的区别是前者接受Maybe作为返回值的lambda吗?

我完全理解为什么可以对数组进行“扁平化”,但我无法将“ flat”的含义应用于单子。

1 个答案:

答案 0 :(得分:6)

假设我有一个Maybe m: Maybe<Int>和一个函数f: Int => Maybe<String>。现在m.map(f)的类型将是Maybe<Maybe<String>>m.flatMap(f)的类型仅为Maybe<String>。因此,就像将数组的数组展平为一个数组一样,在flatMap上使用map而不是Maybe可以将可能变成简单。