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

Maybe Monad: Why flatMap is flat?

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

谁能解释为什么 flatMap()map() 不同,唯一的区别是前者接受带有 Maybe 的 lambda 作为 return 值?

我完全理解为什么数组可以是 "flattened",但我无法将 "flat" 的含义应用到 monads。

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