Monad (functional programming)
In computer science, monads are used to express sequential composition under the functional programming paradigm. Essentially, they provide the ability to order commands in a temporal sequence, such that later commands can use the results of earlier commands.
A monad is a way to structure computations in terms of values and sequences of computations using those values, thus allowing the programmer to build up computations using sequential building blocks (which can themselves be sequences of computations). The monad specifies how combined computations form a new computation and the programmer is thus not required to recode that particular combination each time it is required.
In Haskell, monads are used to incorporate the I/O system into the language in a purely functional way.