
On Tue, Aug 05, 2003 at 02:18:46PM +0100, Simon Peyton-Jones wrote:
[...] All this does is change the need for *module names* to be globally unique into the requirement for *package names* to be unique. This problem is much easier because
a) There are fewer packages, so some central help-yourself global registry is feasible, as Simon M suggests.
b) Package names can be longish and clunky (e.g. including a version number), because we provide a way to avoid mentioning them in source code. [...] The "graft package into tree" mechanism can be seen as a method to implement (b). Installing a package means you can name modules in that package using A.B.C module notation, without explicitly mentioning the package itself. As Simon's message above said, source code therefore only makes sense given some set of graftings (= package -> module prefix mapping), and one might want to make that part of the package (source-code) description.
Wouldn't one still want the module prefix + relative module name combination to produce unique module names? So presumably the prefix should include the package name (though without a version number). BTW, I notice that the current de facto method for avoiding module name clashes is to use names of the form allocated prefix + package name + whatever you want (e.g. Graphics.UI.GLUT.Window)