LoginSignup
4
3

More than 3 years have passed since last update.

Haskell入門 - Stackのインストールと設定

Last updated at Posted at 2020-06-03

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

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3