Emacs is a text editor with an amazing support for extensions. Many people have built add-ons for Emacs to deal with everything from e-mail to version control or agenda planning, but it excels in providing good support for programming. Haskell has actually an amazing support, which integrates highlighting, querying information, building with Cabal and even refactoring!
If you want to know how to set up this awesome environment, follow the tutorial. Later, you can use the Emacs configuration file as a template for your own .emacs.d/init.el
or .emacs
.