In functional programming, a monad is a design pattern that allows structuring programs generically while automating away boilerplate code needed by the program logic.
To simplify the above definition a bit more, We can think of monads as wrappers. You just take an object and wrap it with a monad.
Let’s just be clear on one thing: A Monad is not a class or a trait; Neither is it only dedicated to the Scala language. It is a concept related to functional programming.
This also includes a few examples in Scala.