Cabalを使ってHaskellのパッケージ管理をやっていると、依存関係がもつれて酷い事になる。あるプロジェクトで使うパッケージと別のプロジェクトで使うパッケージが干渉したりとかなんかそういうアレだ。こういう時はsandboxを使うと良いらしい。マニュアル
自分のプロジェクトのディレクトリで
$ cabal sandbox init
を実行すれば、新しいsandboxができる。何かパッケージを入れようと思ったら、そのディレクトリで普通に
$ cabal install ほげほげ
を実行すればそのパッケージはそのディレクトリに入る。
sandbox内のパッケージを使ってghciを起動したい場合は、
$ cabal repl
を使う。
sandbox内のパッケージを使ってghcやrunghcなどのコマンドを叩きたい場合は、1.20.0で追加された(?)execコマンドを使うといいようだ。
$ cabal exec ghc -- --make hogehoge.hs
この記事はcabal-install 1.21.0.0の時点の情報をテキトーに調べた結果を書いたので、もしかしたらもっと正しい使い方とかあるのかもしれないが、そんなもん知らん。
(9月21日: typoを修正)