Most of these tools have editor support, or are most pleasantly used through editor automation, although a bunch are actually CLI programs.
Tool | Purpose | Description |
---|---|---|
hfmt | Code formatter | Integrates hlint, hindent, and stylish-haskell together |
stylish-haskell | Code formatter | Align and sort import statements, remove trailing whitespace, Align case statements, align fields, replace tabs |
hindent | Code formatter | Complete Haskell code formatter (stylish-haskell isn't as aggressive in changes) |
hlint | Linter | Code suggestions and simplification, redundancy detection. |
hdevtools | Language server | Backend for editor plugins: enables realtime syntax and type checking |
ghc-mod | Language server | Backend for editor plugins: enables autocompletion (through neocomplete or deoplete), identify type under cursor, linting, syntax checking, basic code refactoring |
intero | Language server | Backend for editor plugins: enables realtime syntax and type checking, identify type under cursor, jump to definition, built in REPL, automatic type annotation |
Automatically format your Haskell code.
hfmt is a tool for formatting Haskell programs. Currently it is simply a gofmt style wrapper of the excellent tools hlint, hindent, and stylish-haskell. -- hfmt
A simple Haskell code prettifier. The goal is not to format all of the code in a file, since I find those kind of tools often "get in the way". However, manually cleaning up import statements etc. gets tedious very quickly. -- stylish-haskell (vim-stylishask, vim-stylish-haskell)
Haskell pretty printer -- hindent (vim-hindent)
These tools suggest improvements or highlight anti-patterns in your code.
HLint is a tool for suggesting possible improvements to Haskell code. These suggestions include ideas such as using alternative functions, simplifying code and spotting redundancies -- hlint (ale, vim-scripts/hlint)
Both Intero and ghc-mod also perform linting.
These projects semantically understand Haskell and allow things like refactoring, automatic type annotation, syntax checking etc.
Persistent GHC powered background server for FAST Haskell development tools -- hdevtools (ale, syntastic, vim-hdevtools)
ghc-mod provides editors/IDEs with support for Haskell compiler features. It supports both Cabal and Stack based projects and integrations exist for Emacs, Vim, Atom, IntelliJ and VSCode. -- ghc-mod (ghcmod-vim, neco-ghc)
Complete interactive development program for Haskell -- intero (intero-vim, intero-vim (vim8.1))
This project aims to be the universal interface to a growing number of Haskell tools, providing a full-featured and easy to query backend for editors and IDEs that require Haskell-specific functionality. -- HIE - Haskell IDE Engine (LanguageClient-neovim)
HaRe can rename symbols, lift definitions, convert equivalent Haskell constructs like ifs and cases and more while preserving program semantics, types and correctly handling indentation. Only HaRe can execute identity transformation! -- HaRe (vim-hare)