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 _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell