EMZETT.
Увійти

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

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

Докладніше: Вона обгортає значення в контейнер і пропонує операцію (bind, flatMap), що застосовує функцію до вмісту, самостійно обробляючи додаткову поведінку.

Подробиці

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

Див. також: Каррування