昨日Haskellの環境を作ってみたのだが、cabal install ghc-modを3回ほど失敗して、(#`皿´)グヌヌとなって、最後の方法だけがまともにうまくいったので、そのメモ。基本的には下記のサイトが元ネタで、僕のエントリーは俺得なメモです。
MacにhaskellをインストールしてIntellijで使えるようにする | つかびーの技術日記
cabal sandbox + LTS Haskell - Qiita
Haskellコンパイラーのインストール
普通にghcをbrewでいれます。
$ brew install ghc
IntelliJ IDEAのプラグインのインストール
⌘ + , → Plugins → Browse Repository から、Haskellプラグインをインストールします。なお、インストールするプラグインはvendorがJetBrainsのものをインストールします。その後でIntelliJ IDEAを再起動。

なお、これでIntelliJ IDEAでHaskellを書けるようになるというわけではなくて、cabalというのとghc-modというものが必要になります。
cabalのインストール
cabalってなんぞ?と思っていたのですが、ライブラリーを管理するツールらしい
$ brew install cabal-install
ghc-modのインストール
僕はcabal sandboxというものをよくわかってなくて、cabal install ghc-modをやった後にcabal sandbox initとかやったり、それをホームディレクトリーでやったりしてたので、はまっていた。
プロジェクトのディレクトリーに行ってから次のようにやっていくのが正しいらしい。
$ cd path/to/project $ cabal sandbox init $ cabal update $ cabal install happy $ cabal install ghc-mod
ただ、ghc-modのインストールは非常に時間(10分くらい)かかるし、プロジェクトごとに毎回これをやるのは非常に面倒なので、上のコマンドはやっていない。
そこでQiitaにあった次のエントリーを参考にしました。
テンプレートのsandboxの作成
~/.ltshs/{LTS Haskellのバージョン}ディレクトリーを作って、そこにIntelliJ IDEA用のテンプレートプロジェクトを作っておく。IntelliJ IDEAのHaskellプラグインを使うために必要なghc-modはhappyというライブラリーに依存するので、happyというライブラリーを最初にインストールする。
$ mkdir -p ~/.ltshs/2.6 $ cd ~/.ltshs/2.6 $ cabal sandbox init --sandbox . $ cabal update $ cabal install happy $ cabal install ghc-mod
プロジェクトのsandboxを作成
プロジェクトのディレクトリーに移動して、上記のテンプレートを元にsandboxを作成する。cabal.configはシンボリックリンクでよいらしい。
$ cd path/to/project $ cabal sandbox init --sandbox ~/.ltshs/2.6 $ ln -s ~/.ltshs/2.6/cabal.config
IntelliJ IDEAの設定
まず、Preferenceの設定を行う。
⌘ + , → Languages & Frameworks → Haskell にてcabalとghc-modの設定を行う
- cabal executable →
/usr/local/bin/cabal - cabal data path →
path/to/project/.cabal-sandbox - ghc-mod executable →
~/.ltshs/2.6/bin/ghc-mod - ghc-modi executable →
~/.ltshs/2.6/bin/ghc-modi

次にプロジェクトの設定を行う。
⌘ + ; → Project Settings → Project のProject SDKのところでGHCを選択するのですが、ない場合はNewボタンを押してからghcのパスを選択します。


これにて準備完了です。

おわり