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