Revision as of 09:35, 18 May 2012
The IDE world in Haskell is incomplete, but is in motion. The current state of affairs is documented below.
The list below is incomplete. Please add to it with whatever you think of. This list should be expanded into sections with more details, with links to the actual documentation of the described features.
- Vim — PROS: Free. Works on Windows. Works in terminal. Decent alignment support. Tag-based completion and jumps. Very good syntax highlighting, flymake (via Syntastic), Cabal integration, Hoogle. Documentation for symbol at point CONS: Arcane, difficult for new users. Some complain of bad indentation support.
- Emacs— PROS: Free. Works on Windows. Works in terminal. Decent alignment, indentation, syntax highlighting. Limited type information (type and info of name at point). Cabal/GHC/GHCi awareness and Haskell-aware REPL. Completion and jump-to-definition (via ETAGS). Documentation of symbol at point. Hoogle. Documentation for symbol at point. Flymake (error checking on the fly). CONS: Arcane, difficult for new users.
- Sublime — PROS: Works on Windows. CONS: Poor alignment support (though there are packages to do indentation a little better). Proprietary.
- Yi — PROS: Written in Haskell. Works in terminal. CONS: Very immature, lacking features. Problems building generally, especially on Windows.
- Leksah — PROS: Syntax highlighting. Understands Cabal, Module browser, dependency knowledge, documentation display inside the IDE, jump-to-definition, flymake (error checking on the fly), limited evaluation of snippets, scratch buffer. Autocompletion. Not an arcane interface a la Emacs/Vim. CONS: Doesn't have a decent REPL. Are there any other cons?
- Visual Haskell
- KDevelop — Decent project management.
2 Notable features of interest to consider
This is a list of features that any Haskell IDE could or should have. The IDEs listed above generally support some subset of these features. Please add more to this list if you think of anything. In future this should be expanded into separate headings with more description of how they would desirably work.
- Syntax highlighting (e.g. for Haskell, Cabal, Literate Haskell, Core, etc.)
- Macros (e.g. inserting imports/aligning/sorting imports, aligning up text, transposing/switching/moving things around)
- Type information (e.g. type at point, info at point, type of expression)
- Intellisense/completion (e.g. jump-to-definition, who-calls, calls-who, search by type, completion, etc.)
- Project management (e.g. understanding of Cabal, configuration/building/installing, package sandboxing)
- Interactive REPL (e.g. GHCi/Hugs interaction, expression evaluation and such)
- Knowledge of Haskell in the GHCi/GHC side (e.g. understanding error types, the REPL, REPL objects, object inspection)
- Indentation support (e.g. tab cycle, simple back-forward indentation, whole area indentation, structured editing, etc.)
- Proper syntactic awareness of Haskell (e.g. with a proper parser and proper editor transpositions a la the structured editors of the 80s and Isabel et al)
- Documentation support (e.g. ability to call up documentation of symbol or module, either in the editor, or in the browser)
- Debugger support (e.g. stepping, breakpoints, etc.)
- Refactoring support (e.g. symbol renaming, hlint, etc.)
- Templates (e.g. snippets, zencoding type stuff, filling in all the cases of a case, etc.)
3 See also
There was a previous poll by Johan Tibell here. There was also a study on Haskell Weaknesses which barely touched upon IDEs.
- Applications and libraries/Program development#Editor support
- The aim of the shim (Superior Haskell Interaction Mode) project is to provide better support for editing Haskell code in VIM and Emacs privious link is no longer valid repo here