A monad is a particular construction that emerges in the branch of mathematics called category theory. Despite category theory being one of the most abstract field in mathematics, monads are heavily used in functional programming as a design pattern that allows, for example, to manage side-effects. Why should such a powerful design pattern be used only in functional programming languages? Is it possible to apply it also in an Object Oriented paradigm?
In this talk we will try to answer these questions, exploring in parallel the notion of monad in category theory, in functional programming and in object oriented programming, with the help of various examples taken from all the three different worlds.