
| > Now, if Cabal can figure out a plan based on an empty database, it can | deliver on that plan even in a non-empty database, without messing up | any existing installations. | | This is an interesting invariant, weaker than the more obvious one: | "Cabal should do the same plan no matter what the state of the database | is" which is in tension with "don't install more than you have to." 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 Simon