doomemacs/modules/lang/haskell
Henrik Lissner fd19698927
doom|hack-local-variables => MODE-local-vars-hook
Uses a less destructive method (the same that Spacemacs uses) than the
one introduced in 13cee68, by introducing MODE-local-vars-hook hooks,
which run after local vars have been initialized.

The old method was to call `hack-local-variables` *before* mode hooks
run, however, this causes variables set by modes to have higher
precedence than local vars, which is unacceptable.

Also moved intero-mode & dante-mode to haskell-mode-local-vars-hook
2018-09-29 15:01:35 -04:00
..
+dante.el
+intero.el
autoload.el
config.el
doctor.el
packages.el
README.org

:lang haskell

This module adds Haskell support, powered by either intero (the default) or dante.

  • Code completion (company-ghc)
  • Look up documentation (hoogle)
  • eldoc support (dante)
  • REPL (ghci)
  • Syntax-checking (flycheck)
  • Code navigation (dante)
  • Snippets

Haskell contends with C and Ruby as my favorite language. My Haskell code will never save the world, but I'll reach for it for small projects and programming exercises (like projecteuler.com or exercism.io).

I'd love to incorporate it into my machine learning work, but Python and Julia hold that crown. For now.

Table of Contents   TOC

Install

This module has two submodules: Intero or Dante. To activate one, specify one or the other in your pubilc init.el, e.g.:

(doom! :lang (haskell +intero))
;; or
(doom! :lang (haskell +dante))

Your dependencies will change slightly, depending on which you choose:

Intero

Haskell

To get started you must install stack:

MacOS
brew install haskell-stack
stack setup
Arch Linux
sudo pacman --needed --noconfirm -S stack
# Replace pacaur with your AUR package manager of choice
pacaur --needed --noconfirm -S ncurses5-compat-lib
stack setup

External dependencies

This module requires ghc-mod.

stack install ghc-mod

Also ensure that \~/.local/bin is in PATH:

# place this in your profile file, like ~/.bash_profile or ~/.zshenv
export PATH="~/.local/bin:$PATH"

Dante

Haskell

To get started with Dante and Haskell, you must install cabal

  • cabal (the haskell package builder)
  • ghc/ghci (the compiler, syntax checker & repl)
MacOS
brew install cabal-install ghc
Arch Linux
sudo pacman --needed --noconfirm -S cabal-install ghc

External dependencies

Dante requires ghc-mod and hoogle:

cabal update
cabal install happy haskell-src-exts   # ghc-mod/hoogle dependencies
cabal ghc-mod hoogle

And add Cabal's bin path to $PATH:

export PATH="$HOME/.cabal/bin:$PATH"

Troubleshooting

  • Stack users: a dist/setup-config in your project may cause ghc-mod to not work.

Resources

Here are a few resources I've found indespensible in my Haskell adventures: