That said, it works well enough for deriving monad from a transformer stack. Do people use monad transformer stacks? It's been a while since I've written any real Haskell code.
There are more adventurous and specific ways being explored to handle things like "effects", but that exists mostly in SHE or Idris.
mtl is still the practical way to go for now.
I keep wanting an excuse to futz around with this: http://hackage.haskell.org/package/layers
That said, it works well enough for deriving monad from a transformer stack. Do people use monad transformer stacks? It's been a while since I've written any real Haskell code.