Monad is the name of the class for “and_then”, defined in a sensible way, with some laws for how it should behave predictably, and then a bunch of library code works on anything that implements “and_then”. — A plain English description of monads without Haskell code