
Option 1: module App.Component (Foo, Bar, Qux) -- re-exports module App.Component.Foo (Foo, make, func1, func2) module App.Component.Bar (Bar, make, func1, func2) module App.Component.Qux (Qux, make, func1, func2) API clients will have to write long import lists: import App.Component import qualified App.Component.Foo as Foo import qualified App.Component.Bar as Bar import qualified App.Component.Qux as Qux Option 2: module App.Component (module Foo, module Bar) -- re-exports module App.Component.Foo (Foo, makeFoo, fooFunc1, fooFunc2) module App.Component.Bar (Bar, makeBar, barFunc1, barFunc2) module App.Component.Qux (Qux, makeQux, quxFunc1, quxFunc2) Now you can import easily: import App.Component But now you have to prefix your functions, just like in C... Is there another, cleaner option?