Monad: unit wraps a value, bind (>>=) chains computations. Maybe propagates Nothing on failure. List branches on each element. State threads state.