Monad
Functional abstraction for chaining computations that "carry context" — Optional, Result, Promise, List are all monads whether or not their language calls them that.
A type M<T> is a monad if it has two operations: of (lift a value into the context) and flatMap/bind (chain a function T → M<U> without nesting). This lets you compose operations that may fail, be async, or produce multiple values — without writing error handling at every step.
Famously badly explained ("a monoid in the category of endofunctors"). In practice: if you've used Promise.then or Rust's ? operator, you've used monads.