在阅读了有关Typescript中monads的精彩文章之后: https://codewithstyle.info/advanced-functional-programming-in-typescript-maybe-monad/ 我觉得我已经掌握了除此问题以外的所有内容。
有人能解释为什么flatMap()
与map()
一样平坦,因为唯一的区别是前者接受Maybe
作为返回值的lambda吗?
我完全理解为什么可以对数组进行“扁平化”,但我无法将“ flat”的含义应用于单子。
答案 0 :(得分:6)
假设我有一个Maybe m: Maybe<Int>
和一个函数f: Int => Maybe<String>
。现在m.map(f)
的类型将是Maybe<Maybe<String>>
。 m.flatMap(f)
的类型仅为Maybe<String>
。因此,就像将数组的数组展平为一个数组一样,在flatMap
上使用map
而不是Maybe
可以将可能变成简单。