[Haskell-cafe] Packages and modules
David House
dmhouse at gmail.com
Sun Jun 25 08:41:01 EDT 2006
Apologies to Brian for the multiple copies, this wasn't originally
sent to the list.
On 25/06/06, Brian Hulley <brianh at metamilk.com> 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, dmhouse at gmail.com
More information about the Haskell-Cafe
mailing list