うーん、皆が理論的な話をしている中でアレだけど、やっぱりcabalがパッケージの依存関係を壊すことが納得できない。
ソースコードとコンパイルしたプログラムが1対1じゃないのが気に食わない。
http://cdsmith.wordpress.com/2011/01/16/haskells-own-dll-hell/
この記事の3. Can we stop cabal-install from breaking the package database?
の項目でcabalが依存関係を壊す典型的な例を出してるけど、例えば二つのhaskellプログラム、
yiとかgititとかの、たくさんの依存パッケージを持つ応用プログラムを同時に入れようとすると確実に壊れる。
・cabalが無闇にパッケージのリビルドをしない
・ghcが同じソースコードのビルドで違うid,hashを作らない
どっちかで解決できるはずなんだけどなあ。