EMZETT.
Войти

Монады простыми словами

Коротко: Монада — паттерн для аккуратного соединения друг за другом вычислений с «дополнительным поведением» (нет результата, ошибка, список, побочный эффект).

Подробнее: Она оборачивает значение в контейнер и предлагает операцию (bind, flatMap), которая применяет функцию к содержимому, сама обрабатывая дополнительное поведение.

Подробности

  • Option/Maybe: Значение или «ничего». flatMap выполняет следующую функцию, только если значение есть. Это убирает вложенные проверки на null.
  • Result/Either: Успех или ошибка. Первая ошибка обрывает цепочку.
  • Список: flatMap применяет функцию к каждому элементу и «разглаживает» результаты.
  • Promise/Future: Значение, которое появится позже. then соответствует bind.
  • Законы: Левая единица, правая единица и ассоциативность обеспечивают предсказуемое преобразование цепочек.
  • Мнемоника: Монада — конвейер, на котором каждый шаг уже получает вход «распакованным».

См. также: Каррирование