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