The issue in Haskell:
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.
Note, there can be plenty of the functions like foo
in each module (foo1, foo2, etc) and I want to use them from both modules. There can also be data
s with the same member names in each module, after all. So hiding isn't a solution.
I do not consider Lens for resolving it.
Now, does Frege solve the problem of "re-export qualified" of Haskell? It seems it does if I remember correctly, but I can't find the evidence now, can anyone elaborate on that?