Monads (also known as "triples") are a concept from a branch of abstract algebra
known as category theory
. Every monad can be resolved into a family (a category
, actually) of adjunction
One way to think of a monad is as a notion of computation over some class of algebras. In programming languages such as Haskell and Opal, the notion of monad is used explicitly to introduce imperative effects into a pure functional regime without compromising important properties such as referential transparency. This is essentially done by reflecting the notion of computation to the object-level of the language itself, rather than relying an evaluation policy (such as call-by-value) at the meta-level to order effects.
This notion of monad has nothing to do with Leibniz monads.