This module adds Haskell support, powered by either intero (the default), dante or LSP.
- Code completion (
company-ghc
) - Look up documentation (
hoogle
) - eldoc support (
dante
) - REPL (
ghci
) - Syntax-checking (
flycheck
) - Code navigation (
dante
) - Snippets
Here are a few resources I’ve found indespensible in my Haskell adventures:
- Learn you a haskell for great good
- Haskell Programming from first principles
- Awesome Haskell: an extensive list of haskell resources
- The Haskell Tool Stack docs
+intero
Enables intero; a comprehensive, stack-based development environment for Haskell.+dante
Enables dante; a fork of intero aimed at lightweightedness. It doesn’t depend onstack
, supports bothcabal
-only andstack
projects, but lacks eldoc support.+lsp
Enables lsp-haskell (this requires the:tools lsp
to be enabled).
- haskell-mode
+dante
+intero
+lsp
Depending on whether you use Intero, Dante or LSP, your dependencies will differ:
- Intero and LSP users need
stack
- Dante users need
cabal
,ghc
andghc-mod
- LSP users need the
haskell-ide-engine
LSP server - All users will need the
hoogle
package
To use Intero, you need stack
:
brew install haskell-stack
stack setup
sudo pacman -S stack
# Replace pacaur with your AUR package manager of choice
pacaur -S ncurses5-compat-lib
stack setup
sudo zypper install stack
stack setup
To use Dante, you need cabal
(the haskell package builder) and ghci
(the
compiler, syntax checker & repl):
brew install cabal-install ghc
sudo pacman -S cabal-install ghc
sudo zypper install cabal-install ghc
You will need stack
and git
installed.
You will find a comprehensive install guide for haskell-ide-engine on its project page, but here’s a TL;DR:
haskell-ide-engine must be build and installed manually on MacOS, e.g.
git clone https://github.com/haskell/haskell-ide-engine
cd haskell-ide-engine
make
haskell-ide-engine-git
is available on the AUR
yay -S haskell-ide-engine-git
You’ll need to install the following packages using stack
or cabal
:
- (Dante users)
ghc-mod
stack install ghc-mod # or cabal install ghc-mod
hoogle
cabal update cabal install happy haskell-src-exts # ghc-mod/hoogle dependencies cabal ghc-mod hoogle # or stack install ghc-mod stack install hoogle
And ensure the binaries for these packages are in your PATH
, e.g.
# place this in your profile file, like ~/.bash_profile or ~/.zshenv
export PATH="~/.local/bin:$PATH"
haskell-mode
will typically detect what REPL to run based on your project
(e.g. stack, (old-style) cabal or ghc). If you want the new-style cabal REPL you
must set haskell-process-type
manually:
(setq haskell-process-type 'cabal-new-repl)
- Stack users: a
dist/setup-config
file in your project may cause ghc-mod to not work.