Haskell の入門書

  • Learn You a Haskell for Great Good!

    原書は HTML で無料。翻訳書はオーム社で PDF などで買えます。文法解説など初心者向けだけど、後半は難しい

  • 関数プログラミング 珠玉のアルゴリズムデザイン

    これもオーム社の本、かなり難しい。上の本だけではあまり分からない実用的な Haskell としての破壊的な変更や配列の使い方などがサクッと把握できるので良いです。そこそこ前後の章で依存してるのでつまみ食いしにくい

Haskell のプロジェクト構築

1.環境構築

とりあえず HaskellPlatform で入れると良いと思う。 Ubuntu や Linux を使っているなら下記の方法で最新の環境(ghc+cabal)が手に入る。少なくとも GHC7.8 にしないと GHCi などで補完が効かないので辛い

https://gist.github.com/yantonov/10083524

2.Cabal

プロジェクト管理ツール。ライブラリ依存関係の解決もしてくれるビルドツール。とにかくよく依存関係が壊れるので sandbox を使うと良い。

Cabal sandboxを使ってHaskellのパッケージをいい感じに管理する

とくに引っかかるポイントはないと思う。最近は stack という人力で依存関係を整理してくれたデータベースを用いたツールも良いとされる

3.テストフレームワーク

Haskell のデファクトスタンダートな開発環境 GHC-mod の作者の解説がわかりやすく、travis との連携についても解説されており良い。とにかく楽である。

Haskellの単体テスト最前線

QuickCheck のようなフレームワークは今やだいたいどの言語にもあるが、Haskell発祥らしい。テストスイートへの登録にラムダ式を使うのは OCaml の OUnit みたいだ。兄弟的な OCaml にも似たようなものがあると思ったが、現状あまり綺麗にはかけなさそうで残念に思う。

4.Coverage 計測

これも既に標準的な方法があるそうで,HPC というものを使う。Coveralls と連携するならかなり便利なラッパーライブラリがある

https://github.com/guillaume-nargeot/hpc-coveralls

とくに理由がなければ Usage - Travis CI の中で sandbox を使う方法をとるのが良いと思います。あと Travis の ghc は 7.6 が2015.10.2現在の標準なのできちんと usage の通りに 7.8 を指定しないと失敗しました

最後に

上記を実践したのが下記レポジトリ。個人的にすぐ忘れる Tips なども少しメモしています。増えたら整理したい

https://github.com/ShigekiKarita/FPAlgo