David Menendez wrote:
On Fri, Aug 15, 2008 at 7:24 PM, wren ng thornton <[EMAIL PROTECTED]> wrote:
(( For readers who don't want to slog through the rest of this post, the
conclusion is that I feel an agile packaging system is an imperative, as
discussed above. The trick is finding a way to be agile without creating a
maintenance and conflict nightmare. But given the imperative: baby,
bathwater, etc. ))

Have you seen the PackageMounting proposal?

<http://hackage.haskell.org/trac/ghc/wiki/PackageMounting>

Essentially, each package would get its own hierarchy, which would
then be attached to the larger module hierarchy at compile-time
according to compiler options, or Cabal data, or methods as yet
unseen. If, for some reason, you need to import two versions of the
same package, or two packages that have a module name collision, you
can change the default mounting point for one or both.


I hadn't seen it. It looks pretty nice. It reminds me of the recent discussion about hierarchical imports for the Gtk library.[1]

A feature that's typically nice in grafting systems is to allow re-grafting (and pruning), so that after a package is mounted subpackages can be moved around (or removed). These features add complication to building the right tree before linking, but it adds a great deal of power and flexibility.

A typical use case is when your project is using some other large project and you want to mark certain parts of that project as deprecated, unsafe, overridden, etc so that your own code doesn't accidentally use it. Defensive programming and all that.

Of course, used improperly, it also lets you create byzantine structures that channel mind-bending energies that keep systems administrators tossing and turning at nights.

[1] http://www.haskell.org/pipermail/haskell-cafe/2008-June/thread.html#44133


--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to