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