Может быть, Монада: почему flatMap плоский? - PullRequest
0 голосов
/ 28 августа 2018

После прочтения этой замечательной статьи о монадах в Typescript: https://codewithstyle.info/advanced-functional-programming-in-typescript-maybe-monad/ Я чувствую, что мне удалось понять все, кроме предмета этого вопроса.

Может ли кто-нибудь объяснить, почему flatMap() является плоским в отличие от map(), учитывая, что единственное отличие состоит в том, что первый принимает лямбду с Maybe в качестве возвращаемого значения?

Я прекрасно понимаю, почему массивы могут быть «сплющены», но я не могу применить значение «плоских» к монадам.

1 Ответ

0 голосов
/ 28 августа 2018

Допустим, у меня есть Maybe m: Maybe<Int> и функция f: Int => Maybe<String>. Теперь тип m.map(f) будет Maybe<Maybe<String>>. Тип m.flatMap(f) будет просто Maybe<String>. Так же, как при сведении массива массивов к массиву, использование flatMap вместо map на Maybe s превращает майбы майбес в простые майбы.

...