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 adjunctions.

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.