I thought I would never switch from cozy and comfortable Vim to keystrokes hungry Emacs… Not until I realized that Emacs is a better IDE for all of languages I play with than Vim (C#, F#, Haskell).

I am trying to learn Haskell as well as other functional programming languages when possible. The biggest disadvantage seeing from C# developer perspective is absense of a fully fledged IDE experience like the one that you get using Microsoft Visual Studio. In the end of the day I didn’t even need most of features you can find in Visual Studio, but most useful ones like showing type signatures, finding usages, going to defenition, running interactive REPL sessions within IDE itself.

And so being old Vim adept I was trying to adopt different plugins available for working with Haskell, F#, etc. Same experience struck me every time I tried them - it was never easy.

Then lately out of the blue somebody on twitter mentioned that he had managed to setup Haskell IDE in Emacs in a matter of seconds and it was just working (the name of Emacs package is Intero that is based on Stack - a Haskell stack tool)… That sounded nonsense to me since I myself have spent numerous hours trying to setup Haskell environment in Vim and I knew that it was almost impossible. Plus it was Emacs :) what could be more wrong than Emacs in the eyes of an old Vim adept?!

But there was no other option for me but trying to learn Emacs in order to be able to use Haskell in a more convenient environment. And so I did that… and it turned out that using Emacs (not only for Haskell development) is not that bad :) in fact it is very convenient.

Am I still using Vim? Sure thing, sometimes it is the only thing that is available and I like it and know how to operate it.

So, the bottom line for me are these points to remember to keep in mind going forward:

  • Never forget learning something new even though there is no particular reason for you to do so. You might simply descover that reason once you will master a new skill
  • Never overestimate the power of the tools you are currently using
  • Never underestimate the power of the tools you decided not to use or just don’t know