Claus Reinke wrote:

a few examples, of the top of my head:
- consider the base split in reverse: if functionality is only repackaged,
   the merged base would also provide for the previously separate
sub-package apis (that suggests a separate 'provides:' field, though, as merely listing version numbers wouldn't be sufficient)
- consider the base split itself: if there was a way for the base split
   authors to tell cabal that the collection of smaller packages can
   provide for clients of the the old big base, those clients would
   not run into trouble when the old big base is removed

These two cases could be solved by re-exports, no extra mechanism is required.

- consider adding a new monad transformer to a monad transformer
library, or a new regex variant to a regex library - surely the new package version can still provide for clients of the old version

This case doesn't work - if you add *anything* to a library, I can write a module that can tell the difference. So whether your new version is compatible in practice depends on the client.

- consider various packages providing different implementations
   of an api, say edison's - surely any of the implementations will
   do for clients who depend only on the api, not on specifics

Yes, and in this case we should have another package that just re-exports one of the underlying packages.

You seem to want to add another layer of granularity in addition to packages, and I think that would be unnecessary complexity.

Cheers,
        Simon
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to