Skip to content

Latest commit

 

History

History
90 lines (67 loc) · 5.02 KB

tools.md

File metadata and controls

90 lines (67 loc) · 5.02 KB

Haskell tools

Editor(ish) tooling

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

Code formatters

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)

Linting

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.

Language servers

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)

IDE like features

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)

Resources