Monade
Astrazione funzionale per concatenare calcoli che «portano con sé un contesto»: Optional, Result, Promise e List sono monadi, che il loro linguaggio le chiami così o no.
Un tipo M<T> è una monade se offre due operazioni: of (inserisce un valore nel contesto) e flatMap/bind (concatena una funzione T → M<U> senza annidamenti). Così si compongono operazioni che possono fallire, essere asincrone o produrre più valori, senza gestire gli errori a ogni passo.
Famosa per le spiegazioni pessime («un monoide nella categoria degli endofuntori»). In pratica: se hai usato Promise.then o l'operatore ? di Rust, hai già usato monadi.