Libraries and hierarchies

Ross Paterson
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)