flatMap
подпись:Функциональная подпись flatMap (input -> output) предлагает выполнить любое сглаживание?
/* applies a transformation of the monad "content" by composing
* this monad with an operation resulting in another monad instance
* of the same type
*/
def flatMap(f: A => M[B]): M[B]
есть в любом случае, чтобы понять его подписью (вход для вывода), что его уплощение структуры (для имени flat
исключением)? или я должен прочитать его реализацию, чтобы понять это? не является хорошей практикой кодирования, я могу понять по сигнатуре функции (ввод для вывода даже без имени функции) именно то, что она делает? если да, то как flatMap
следует этой базовой практике программирования? или делает это нарушает it?
Если вы просто используете 'map' с' f: A => M [B] ', вы получите« M [M [B]] '. Так что с 'flatMap' вы выравниваете – mfirry
' flatMap' эквивалентно 'join (map fm)' где 'join' имеет тип' M [M [A]] => M [A] ', поэтому он не сглаживает структура ввода, а скорее отображаемая структура. Это не сразу видно из типа 'flatMap'. – Lee
Что еще можно сгладить? – gallais