昨日まで、Windows10でHaskell+ATOMエディター+プロジェクト管理ツールStackを使ってみて、ATOMでghc-modがうまく動かず、一度すべてアンインストールして、Windows10+Haskell+Cabal+ATOMエディターという環境を構築してみました。
使ってみて良かったところ
- 速い
- ATOMで問題なくghc-mod使える
- .cabalファイルが何か分かった。
cabalとstackの関係
Haskellでは2015年ごろにstackというツールができて、最近はこれが推奨されているようです。stackコマンドでプロジェクトを作成して、ビルド、テスト、ライブラリ依存管理などができます。
それ以前まではcabalが使われていました。現在のcabalはsandboxという機能でプロジェクト単位にライブラリーのバージョン管理ができますが、初期のcabalはOSのアカウントでライブラリー管理をするため、異なるプロジェクトや、githubからとってきたプロジェクトで、ライブラリーのバージョンを調整する必要があり大変だったそうです。
https://sites.google.com/site/toriaezuzakki/haskell/environment#TOC-sandbox-
cabalのしんどいところ
stackではプロジェクトを新規に作成したらテスト用のフォルダーも作成してくれてすぐテストができますが、cabalは設定ファイルを書いて用意する必要があるため面倒です。
公式のユーザーガイドも出来があまりよくなく、依存関係をどう書いていけばいいかわかりません。
https://www.haskell.org/cabal/users-guide/developing-packages.html#test-suites
いろいろ調べていて以下を見つけました。
http://taylor.fausak.me/2014/03/04/haskeleton-a-haskell-project-skeleton/
これを参考にしようと思ったのですが、これを今から試すならstackやったほうがよさそうです。