Cabal and GHC

Manuel M T Chakravarty chak at cse.unsw.edu.au
Fri Nov 23 02:11:26 CET 2012


Simon Peyton-Jones <simonpj at microsoft.com>:
> 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:

  http://www.scala-sbt.org

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 

  http://ant.apache.org/ivy/

to do their dependency management.

Manuel




More information about the Libraries mailing list