irrelevant package

Simon Marlow simonmar at microsoft.com
Wed Jun 15 08:15:13 EDT 2005


On 14 June 2005 13:03, Duncan Coutts wrote:

> On Mon, 2005-06-13 at 16:06 +0100, Simon Marlow wrote:
>> This is "fixed" in newer versions of Cabal.
>> 
>> However, you are heading for problems here.  When you install a
>> package P that includes a module M, you prevent the user from having
>> any modules called M unless they say '-hide-package P' (see previous
>> discussions on this subject). 
>> 
>> For this reason, we strongly recommend using hierarchical module
>> names. 
>> 
>> At the moment, Cabal "exposes" all the packages it imports.  Perhaps
>> we should have an option to install an unexposed package, to allow
>> installation of packages that contain non-hierarchical module names.
>> Isaac - what do you think?
> 
> But remember that any exposed dependent package of P effectively
> exposes package P anyway. So it's not the case that you can install
> an unexposed package and assume that it'll all be ok. Any package
> installed later can come along and expose your package and you're
> back to the problem that no programs/libs with your module M can now
> be complied (without several -hide-package flags).

A package is never exposed as a result of being depended on by another
package, but its modules are brought into the module namespace.

The difference is that you can import modules from an exposed package,
you can't from a hidden package.  This is true even if the hidden
package is depended on by another exposed package.

Cheers,
	Simon


More information about the Libraries mailing list