Its a concept that was invented in mathematics in the 1960s, and it was rediscovered in computer science in the 1990s
reference
In functional programming, a monad is a software design pattern with a structure that combines program fragments (functions) and wraps their return values in a type with additional computation
So
(x, y) → x + y
can be curried into
x → (y → x + y)
Or, in classical notation
f(x, y) = x + y
g(x) = y → f(x, y)
By John Agudelo