Libraries and hierarchies
Ross Paterson
ross@soi.city.ac.uk
Wed, 6 Aug 2003 10:04:53 +0100
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)