Het is dinsdagmorgen en je hebt de dag ervoor voor de eerste keer over monad transformers gehoord. Tijdens het hoorcollege ben je samen met je medestudenten tot een oplossing gekomen maar de professor zei dat er heel veel verschillende oplossingen mogelijk waren.

Je hebt na hard nadenken al een veel mooiere oplossing gevonden maar je bent toch nog niet helemaal tevreden over de code. Je merkt op dat je nergens in je oplossing gebruik hebt gemaakt van het feit dat je de Either monad combineert met de IO monad. Dat wil dus zeggen dat we mogelijkerwijs abstractie kunnen nemen van de monad waarmee we combineren.

Schrijf zo een gegeneraliseerde versie van de either monad die we in het hoorcollege hebben gezien. Deze generalisatie begint met het type: EitherIO e a wordt EitherT m e a.