昨日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
のパスを選択します。
これにて準備完了です。
おわり