Monads are a core abstraction in modern Haskell programming. They are sometimes colloquially described as a means to provide a programmable semi-colon. The key trick when using monads is to make the semi-colon just expressive enough for the task at hand. This yields a concise description with a low reasoning overhead.
Monad transformer libraries ease the construction of custom monads, and this talk will give an introduction into different approaches for monad transformer libraries.