This is one of the best explanations of monad transformers I’ve found, despite being “just” a StackOverflow answer.