Monads are very useful in many different situations.
But they get a little unwieldy when we have different Monads nested inside each other.
In these cases Monad Transformers come to the rescue. They allow us to compose different Monads into one that shares the functionalities of all of them.
But sometimes we want to combine the behavior of Applicatives in the same way. This is especially useful when we have to combine independent tasks.
In this post we will see how to do this in Scala with the use of the Cats library.
But let's first look at an example of Monad Transformers.