Monada
Funkcyjna abstrakcja do łączenia obliczeń „niosących kontekst” — Optional, Result, Promise i List to monady, niezależnie od tego, czy język tak je nazywa.
Typ M<T> jest monadą, jeśli ma dwie operacje: of (wniesienie wartości do kontekstu) i flatMap/bind (łączenie funkcji T → M<U> bez zagnieżdżania). Pozwala to składać operacje, które mogą się nie udać, być asynchroniczne albo dawać wiele wartości — bez obsługi błędów w każdym kroku.
Słynie z fatalnych wyjaśnień („monoid w kategorii endofunktorów”). W praktyce: jeśli używałeś Promise.then albo operatora ? z Rusta, używałeś monad.