Help us understand the problem. What is going on with this article?

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

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

works-hi
「はたらく」を楽しく!に向けて大手企業の人事業務から変えていく HR業界のリーディングカンパニー
https://www.works-hi.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした