My Simple Haskell Development Environment

Posted on 2018-12-16 by Kendrick Tan

Background

When I started developing in Haskell, there were many opinions on what build-tools, what IDE/text-editor you should use. Each coming with their own pros and cons.

After playing around with the number of options, I eventually found a setup which just works, and would like to share that tool stack with anyone / newcomers who are still undecided on what toolchain they should use.

Project Building and Management

For the project building and management side of things, Nix and Cabal is my main go-to solution.

Nix and Cabal

Nix is a package manager for Linux and Unix systems. (Think virtualenv but on steroids).

Cabal is a package manager for Haskell, combine that with Nix and you’ll have next level sandboxing and environment reproducability.

Editors

I tried many different editors/ide-combos but eventually settled on NeoVim with ghci, due to it’s sheer simplicity.

NeoVim

NeoVim is great. It’s lightweight, its simple, and it boots up almost instantly. It also does the one thing you want a text editor to do really well - editing text.

You can grab the neovim config file here

GHCI

Glasgow’s Haskell Compiler Interactive is a REPL for Haskell. Just because it’s simple doesn’t mean its not powerful though.

With the use of typeholes (_), ghci will able infer the types and assist you in solving the problem.

Conclusion

Developing on Haskell can be as complicated, or as simple as you choose it to be.