"If you don't understand and use monads, you are at best a quarter of a Haskell programmer. A corollary of this is that, since using monad transformers is the only (or at least the approved) way to use two or more monads together, if you don't understand and use monad transformers you are at best half a Haskell programmer."
"Monad transformers are like onions. At first, they make you cry but then you learn to appreciate them."
I recently came across a monad transformer tutorial by Martin Grabmüller and found it quite enjoyable.
I felt it may be even more helpful to add some discussion on the design of the monad transformer library.
So I added two subsections (Section 2.2 and 2.5) based on my understanding.
As I myself is still learning Haskell, there could well be many errors.
The literate haskell file can be proprocessed by lhs2Tex and then used to generate a PDF.
The typesetting in the PDF file is screwed at some places for some reason I don't know, but that's OK.
PS: If you want to see the code of Monad Transformer Library, note that it's in ghc's extralibs, not corelibs.
If you're running debian, apt-get source libghc6-mtl-dev.
There is a course that covers monad transformers.