久しぶりにHaskellをやる
概要
Haskellの環境構築をするにあたって、パッケージ管理にcabalを使うが、バージョン合わせとか何やらで非常に面倒。common lispのroswellやclojureのleiningenなどと似たような感じでビルドとかパッケージ管理とかやってくれるStackというものがあるので導入してみる。
Stack導入
- インストール
- 公式HP参照
- 使い方
# 1. プロジェクト(sample-project)を作成 stack new sample-project # 2. プロジェクトに移動 cd sample-project # 3. セットアップ(最初に1回) stack setup # 4. ビルド stack build # 5. 実行 stack exec sample-project-exe
vim
取り敢えずプロジェクトのルートフォルダにいる前提で、ビルド等のコマンドが実行できる様にvimの設定を書いてみた。
nnoremap [Exec] <Nop> "; 始動キーは<C-t> nmap <C-t> [Exec] "; 通常のghc "; <C-t> e map <silent> [Exec]e :!ghc -e main %<CR> "; -------------------- "; stackを利用する設定 "; -------------------- "; セットアップ : <C-t> s map <silent> [Exec]s :!stack setup <CR> "; ビルド : <C-t> b map <silent> [Exec]b :!stack build <CR> "; 実行 : <C-t> p "; (注意) プロジェクトのルートからファイルを編集している想定 "; ルートにあるcabalファイルがプロジェクト名になっているので、それを探しに行くことで対応 map <silent> [Exec]p :execute('!stack exec ' . fnamemodify(expand(";**/*.cabal";), ";:r";)) . '-exe' <CR>