Writing Haskell with flycheck was a revelation. As-you-type linting and typechecking gives a nice tight feedback loop.