"Monad" is a word that describes a set of behaviors
In scala, we use the Monad[Foo]
typeclass from cats to define instances of this behavior.
The essence of its behavior is the ability to describe a series of computations, where one computation depends on the result of the computation that came before it.
For example, Monad[Option]
shows that the Option[A]
data type can be used to describe computations of A
which may result in no value.