Re-export qualified?

haskell, module, syntax

Solution

Basically, no. This has been a long-standing feature request by people like the authors of Gtk2hs. Gtk2hs has a very broad module hierarchy where it might make sense to both:

- Use the same name in several different modules (e.g. newButton in both Graphics.UI.Gtk.Buttons.Button and Graphics.UI.Gtk.Buttons.CheckButton)

- Provide the convenience to the user of importing all these modules with a single import statement

For now, if you want to reexport several modules together all you can do is:

- Avoid reusing names in the modules you wish to reexport

- Where appropriate, use type classes to allow the same name to be used for several different purposes

Problem

suppose you have two modules like ``` module Foo.A where foo = 42 ``` and ``` module Foo.B where foo = 12 ``` and you want to write a super module ``` module Foo ( module Foo.A , module Foo.B ) where import Foo.A import Foo.B ``` which re-exports those modules, you would get a name clash. Is there a solution for this?

Original source