doomemacs/modules/lang/haskell
Henrik Lissner 91357a3e5d
💥 Replace core-popup with new feature/popup module
This is a breaking change! Update your :popup settings. Old ones will
throw errors!

Doom's new popup management system casts off its shackles (hur hur) and
replaces them with the monster that is `display-buffer-alist`, and
window parameters.

However, this is highly experimental! Expect edge cases.  Particularly
with org-mode and magit (or anything that does its own window
management).

Relevant to #261, #263, #325
2018-01-06 02:17:43 -05:00
..
+dante.el
+intero.el 💥 Replace core-popup with new feature/popup module 2018-01-06 02:17:43 -05:00
config.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: