[更新] より新しい情報
注意: 今では GHCup でインストールされる Haskell 環境を好きに使えば良い気がしています。くわしくは先ず ghcup tui で出てくる環境選択画面を見てみることをおすすめします
また現時点でモダンなIDE環境といえば Intero ではなく VS Code + Haskell拡張 (Haskell Language Server) になると思います.
以下の記事もどうぞ:
あらまし
- 
Stack は、Haskell のビルドツールのひとつ。
- パッケージ群のバージョンを固定 (snapshot) することで Cabal hell が起こらなくなっている。
- あくまでもビルドツールなのでプロジェクトを作ってその中で使うのが普通
- しかしちょっとしたコード片のためにプロジェクトの環境構築するのは面倒。
- グローバル環境を雑に使ってみたい(そういう使い方はあまり想定されていないかもしれないが)
 
- 
Intero のようなモダンな IDE 環境を使ってみたい。
- Intero は Stack の GHC を見ているようだ。つまり、プロジェクトの外で起動するとグローバルの Stack 環境で起動する。
- 適当に拾ってきたコードを読む時にも Stack のグローバル環境は使えそうだ
 
現時点 (2018年4月) で雑に試した内容を書いておく。環境は macOS です。
既存の GHC を消す
色々とややこしいので ghc や ghci にパスが通っていない状態にする。 ついでに古い cabal や ~/.cabal も消した。
Stack のインストール
curl -sSL https://get.haskellstack.org/ | sh
stack upgrade
LTS バージョンの選定と Stack グローバル環境の構築
Stackage のトップページに新しめの GHC バージョンが揃っているので、適当な GHC を選び、それに対応する LTS のバージョンを控えておく。自分は lts-7.24 (LTS 7.24 for GHC 8.0.1, published 10 months ago) というのを選んだ。
Stack の環境は ~/.stack に構築される。ここに何もないことを確認して、 stack setup を起動。すぐに ^C で止める。
$ stack setup
^C
生成された ~/.stack/global-project/stack.yaml を編集し自分の好きな LTS のバージョンに変え、 stack setup を再実行
$ cat ~/.stack/global-project/stack.yaml 
packages: []
resolver: lts-7.24
$ stack setup
Intero のインストール
公式 の通り。 ~/.emacs/init.el に以下を書いた。
;; If you don't have MELPA in your package archives:
(require 'package)
(add-to-list
  'package-archives
  '("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(package-refresh-contents)
;; Install Intero
(package-install 'intero)
(add-hook 'haskell-mode-hook 'intero-mode)
GHC の起動
そのままでは当然 ghc などのコマンドが通らない。 stack ghc 等で起動できる。
あるいは、
stack exec bash -- --login
として stack の下で新しいシェルに入れば ghc にパスが通るようになる。 コマンドへのオプションは -- の後に置くことに注意する。 stack exec CMD -- オプション のようにする。
ただ、stack ghci が experimental ということなので この bash 環境もどこまで使えるのか??
パッケージのインストール?
stack build にパッケージ名を直接指定すればグローバル環境の Stack にパッケージが入る (Intero からも見えるようになる)。
stack build パッケージ名
Stack にはインストールという概念は無い(コマンドとしては存在するが stack build --copy-bins のエイリアスになっている)。その代わりに stack.yaml に書かれたパッケージが stack build 時にビルドされる。
今回は Stack をグローバル環境で使っているので、 ~/.stack/global-project/stack.yaml に書けば良さそうだが、ビルド対象のプロジェクトが無いので素の stack build は効かない。
上記のようにすればグローバルで stack ghc した時に使えるパッケージが入る。