I attended the Brisbane Functional Programing Group meetup this week, and one of the talks was by Chris McKay on “The Whirlwind tour of Haskell Development Tools”. I always enjoy these talks because often the books don’t adequately explain these things and the experts often assume that these things are known.
Here are my notes:
- getting started books – Real World Haskell, Learn You A Haskell For Great Good, Thiinking Functionally with Haskell
- ghc – core compiler, supported pretty much everywhere
- Cabal – package management system for Haskell, general purpose build tool
- Haskell Platform – bundle of the previous 2 bundled for your platform, plus commonly used libraries, safe place to start
- Windows – pressure for the committers to kept his up-to-date, Haskell platform takes care of the hard parts
- OS X – ghcformacosx for an installer or via brew / macports
- sandbox – supported by Cabal – will check here before going to the system libraries
- src/Main.hs is the starting point
- licences – choosealicence.com or tldrlegal.com
- default-language – Haskell2010
- GHCi – REPL console, also use for inspections at the command line, used by editor
- GHCi-NG – extension with better debugging and extra features, required for some plugins
- Hlint – like lint on other languages, looks for code smells (patterns of functional rules), good for beginners
- Hoogle is Google for Haskell – idea of what you want to do and want to know a function to do it
- Hackage – repository of all Haskell knowledge
- GhcMod – used by plugins, may need to install it, unlikely to use it directly
- Emacs – haskell-mode (syntax highlighting, indentation, REPL integration), ghc-mod (access to a whole bunch of tools, nice place to start), flycheck-haskell (syntax checking, can’t use with ghc), company-ghc (auto completion), shm (structured Haskell mode, write code in a tree and it edits for you)
- https://github.com/chrisdone/emacs-haskell-config – good place to start and works out of the box
- vim – vim2hs (syntax highlighting), syntastic (syntax checking and lint), neco-ghc (auto completion), ghcmod-vim (compliation errors and warnings, not as good as syntastic)
- other editors that work OK – Sublime, EclipseFP, Atom (from Github, still immature), intelliJ-haskell, FP Haskell Center