Haskell入門 - Stackのインストールと設定
どちらかといえばHaskellの門戸を叩くまでのアレ。新しい環境を作る度に古い環境を見ながら右往左往する癖をやめたい。
インストールは最小限。エディタは好きなものを使う。
Stackのインストール
最悪これだけあれば良い。
パッケージマネージャからインストールすると古いものがインストールされるので、curlまたはwgetでインストールする。
-
$HOME/.local/bin
には、stack install
でインストールしたグローバルな何かが降ってくる。 -
.bashrc
あたりにオートコンプリート用のアレを仕込んでおくと、ノリでStackをシバけるようになって便利。 -
stack update
はかなり時間がかかる。後回しでもよいが、忘れていると初回ビルドに鬼のような時間がかかって泣く。
$ curl -sSL https://get.haskellstack.org/ | sh
$ echo 'export PATH=~/.local/bin:$PATH' >> ~/.bashrc
$ echo 'eval "$(stack --bash-completion-script stack)"' >> ~/.bashrc
$ stack update
最低限ほしいツール
- hlintはHaskell用のlinter。初心者であればあるほど入れるべき。
- 不要なdoの削除やη-簡約の指摘だけでなく、場面により適した関数を提案してくれたりもする。
- stylish-haskell
- フォーマッタ。ファイル保存時に自動的に走るようにすると吉。
$ stack install hlint
$ stack install stylish-haskell
次点でほしいやつ
- haskell-ide-engine (hie)
- Haskell用の言語サーバ。
- ビルドにボチボチ時間がかかる。また、ビルドに使用したGHCのバージョンとプロジェクトで使用するGHCのバージョンが同じでないと動かないらしい。
$ git clone https://github.com/haskell/haskell-ide-engine --recursive
$ haskell-ide-engine/install.hs hie
StackのConfigとTemplatesの設定
Stackを使ってプロジェクトをビルドしたり、stack update
をしたりすると、$HOME/.stack
下に諸々が生える。
これを設定すると、stack new
したときにセクシーなHaskellプロジェクトを生成できるようになる。
-
config.yaml
-
stack new
するときの引数のデフォルトを設定できる。 - フォーマットはググれば出てくるが、概ね下のものを埋めてればいいはず。
-
default-template
にはURLを指定できるので、テンプレートをGithubに置いておくとかしこい。
-
templates:
scm-init: git
params:
author-name: おなまえ
author-email: おところ
copyright: らいせんす
github-username: githubの名前
default-template: てんぷれーと
-
templates/*.hsfiles
- ここには
stack new
したときに自動生成されるファイル群のテンプレートを作成する。 - デフォルトで存在するものに手を加えるといい。
- おススメはテストフレームワークの追加/変更(doctest, QuickCheck, tastyとか)と、GHCオプションで警告をONにすること。
- ここには
ghc-options:
- -Wall
- -Wcompat
- -Wincomplete-record-updates
- -Wincomplete-uni-patterns
- -Wredundant-constraints
これを例えばdependencies
の直上辺りに置いておくと、警告がいっぱい出てなんか楽しくなる。
参考
本気で Haskell したい人向けの Stack チュートリアル
http://web.archive.org/web/20200131232140/https://qiita.com/waddlaw/items/49874f4cf9b680e4b015