Здравствуйте, dimgel, Вы писали:
D>Здравствуйте, welltyped2, Вы писали:
W>>попробуйте прочитать http://habrahabr.ru/post/151703/
D>D>Решить с помощью map не выйдет. так как в результате получим Maybe<Maybe<B>>, поэтому нам нужна еще одна функция
D>static class Monad {
D>В скале это называется flatMap() в дополнение к map(). И что, это и есть монада? Господи, да в скаловских коллекциях функций мильярд, на каждую придумывать по параллельному термину — озвереешь.
flatMap это только для списков. Если абстрагировать его на любой F[A] и добавить pure, то в итоге можно получить то что есть в scalaz
trait Monad[F[_]] extends Applicative[F] with Bind[F]
где как раз Bind дает
def bind[A, B](fa: F[A])(f: A => F[B]): F[B]
а Applicative
def pure[A](a: => A): F[A]