Monad
Funktionell abstraktion för att kedja beräkningar som "bär med sig kontext" — Optional, Result, Promise, List är alla monader vare sig deras språk kallar dem så.
En typ M<T> är en monad om den har två operationer: of (lyft ett värde in i kontexten) och flatMap/bind (kedja en funktion T → M<U> utan att nästla). Detta gör att man kan komponera operationer som kan misslyckas, vara asynkrona eller producera flera värden — utan att skriva felhantering på varje steg.
Berömt obegripligt förklarat ("monoid i kategorin av endofunktorer"). I praktiken: om du har använt Promise.then eller Rusts ?-operator har du använt monader.