はじめに
この記事では、以下二点を目標に話を進める。
- Linux 上に最低限の Haskell 開発環境を構築する
- vim で ghc-mod による入力補完が使えるようにする
以下の点は扱わない。
- cabal ファイルの書き方
- stack の使い方
- vim プラグインの導入/使い方
stack 導入
Haskell 環境構築のため、まずは stack を導入する。
stack は最近登場した Haskell のパッケージ管理/ビルドツール1で、色々便利なので入れておく。
- How To Install の項を参考に stack をインストール
筆者の利用する Arch Linux では yaourt で導入可能。
yaourt -S haskell-stack
GHC とライブラリの導入
導入は stack が自動でやってくれる。
- 以下コマンドを実行
stack setup
プロジェクト作成
stack を使ってプロジェクトを作成する。
# 作業ディレクトリに移動cd workspace/sample
# プロジェクトの作成
stack new
# ビルド
stack build
# 実行
stack exec new-template-exe
ghc-mod 導入
Haskell の高度な補完のため、 ghc-mod を導入する。
stack install cabal-install ghc-mod
ghc-mod のラッパー作成
ghc-mod などのツールは stack exec コマンド経由でのみ実行可能であり、このままでは vim から認識できない。vim から認識させるため、Haskell プラグイン自体を修正してもよいが、今回はラッパースクリプトを用意して対応する。
- 以下のスクリプトをパスの通ったところ(/usr/local/bin など)に配置する。
ghc-mod
#!/bin/sh
stack exec -- ghc-mod $*
ghc-mod-configure
#!/bin/shPATH=$(stack path --bin-path):$PATH cabal configure \
--package-db=clear \
--package-db=global \
--package-db=$(stack path --snapshot-pkg-db)\
--package-db=$(stack path --local-pkg-db)
- プロジェクトの状態を更新する
- cabal ファイル更新のたびに再実行が必要
# 作業ディレクトリに移動cd workspace/sample
# 更新
ghc-mod-configure
vim
neobundle で以下のパッケージをインストールする
設定は適宜
スクリーンショット
課題
- cabal ファイル変更時に stack build, ghc-mod-configure の再実行が必要
参考/関連
- Haskell開発環境の構築 (Windows編) - Qiita
- Atomのhaskell-ghc-modをstack使用時にも動くようにする - Qiita
- Haskellの単体テスト最前線 - あどけない話
Rubyist 向けにいうと、 stack ≒ rbenv + ruby-install + bundler + rake ↩