Monad Transformers: Some Examples Serves as a proof-of-concept. Can we emulate DI using return type overloading and type classes?