Signature

module type Monad = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

Haskell

A design pattern used to handle program-wide concerns, such as state or I/O, in a pure functional way.