也许 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。
阅读这篇关于 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。