[Haskell] Hierarchical module namespace extension not
sufficiently flexible
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Sat Mar 5 12:03:38 EST 2005
On Fri, 2004-12-17 at 14:26 +0000, Duncan Coutts wrote:
> All,
>
> So here's the problem: we have a binding to a large foreign library (GTK) which
> we are trying to fit nicely into hierarchical module name space. It would live under
>
> Graphics.UI.Gtk
> Graphics.UI.Gtk.Button
> Graphics.UI.Gtk.Frame
> ... etc
>
> Now there are over 100 modules directly under Graphics.UI.Gtk and you don't want
> to have to import each one of them separately. Of course you will not use all of
> them in one module but you might reasonably use 20+ of them.
>
> So it'd be nice to be able to say:
[snip]
Or as an alternative to exporting qualified names as I proposed before
(ie Graphics.UI.Gtk exports the qualified name "Button.label") how about
this:
import qualified Graphics.UI.Gtk.*
which just means import every module under Graphics.UI.Gtk qualified
with it's module name so that then you could reference:
Button.label
A downside to such a scheme is that it might make it too easy to import
internal modules or modules that are not supposed to be used together.
I think on balance I prefer putting the power in the hands of the
library author by letting modules export other modules' contents
qualified with the module name
module Graphics.UI.Gtk (
qualified module Graphics.UI.Gtk.Button as Button,
...
Any other ideas of how to wrap large existing name spaces? The .Net and
Java people would have the same problem: to use nice qualified names
under the current module system, users would have to import 100's of
modules.
Duncan
More information about the Haskell
mailing list