I know this will be controversial, because it can break (weird) code and because it's not Haskell 2010, but hey, you can't make brain salad without breaking a few heads. ScopedTypeVariables is just awesome for two fundamental reasons:
1. It lets you write type signatures for more things.
2. It lets you write more precise type signatures for many things.
As a consequence of those two,
3. It helps you get much better error messages from the type checker.
And for all that,
4. It's really easy to use.
What do other people think?