久しぶりにHaskellをやる

概要

 Haskellの環境構築をするにあたって、パッケージ管理にcabalを使うが、バージョン合わせとか何やらで非常に面倒。common lispのroswellやclojureのleiningenなどと似たような感じでビルドとかパッケージ管理とかやってくれるStackというものがあるので導入してみる。

Stack導入

  1. インストール
  2. 使い方
# 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>

参考