Cabal and GHC

Manuel M T Chakravarty chak at
Fri Nov 23 02:11:26 CET 2012

Simon Peyton-Jones <simonpj at>:
> Well I didn't say it should *ignore* the database. The current database might influence its plan.  For example if, after installing both yesod-platform and Fay, Cabal is asked to install a package P which depends on yesod-platform data-default 0.4-0.8, then Cabal could pick the already-installed version of yesod-platform depending on data-default 0.5, rather than installing yet another version depending on data-default-0.8.
> So the invariant I suggest is
> * If it'd work in an empty database, it should work in any non-empty one
> * Installing X should never break the existing installation of Y

This makes a lot of sense to me.

I think it is also time to admit that we are not the first trying to solve this problem. For example, Scala has the sbt tool:

I am sure, it is not perfect, but it seems much more flexible and versatile than Cabal. Interestingly, the Scala guys were smart enough to avoid re-inventing the wheel and are using Apchae's Ivy

to do their dependency management.


More information about the Libraries mailing list