See https://en.wikipedia.org/wiki/Monad_(functional_programming)
See OnMonads for more on this.
CategoryFunctionalProgramming