Apologies to Brian for the multiple copies, this wasn't originally
sent to the list.

On 25/06/06, Brian Hulley <[EMAIL PROTECTED]> wrote:
I'm wondering: would it not be easier to just make it that the package name
is prepended to the hierarchical module name, so the modules would instead
be called by the names P.Data.Foo and Q.Data.Bar?

This has the disavantage that if you move a module from one package to
another, all existing code using that module breaks.

Perhaps we need something analoguous to qualified imports: as well as
specifying the modules hierarchical path, you could also specify its
package. E.g.,

import Network.HTTP from HTTP

Or, using your syntax:

import HTTP.Network.HTTP

I prefer mine because we could also allow not qualifying the package:

import Network.HTTP -- will search all known packages for a Network.HTTP package

This is likely to be less of a pain in the majority of cases when the
module names don't overlap. Also, ambiguity. Given 'import
HTTP.Network.HTTP', the compiler has to search for both packages named
HTTP and modules with a full hierarchical name of HTTP.Network.HTTP.
In the unlikely sitatution where a different package did indeed
provide a module called HTTP.Network.HTTP, there would be an overlap.

Finally the compiler could give better error messages if the module
doesn't exist. I.e. one of 'Package X not found' or 'Module Y not
found within package X' instead of 'Module Y not found'.

--
-David House, [EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to