
I want to propose something really simple that would avoid this problem with minimal additional complexity:
ghc -iGraphics.UI.Gtk=src
the meaning of this flag is that when searching for modules, ghc will look for the module Graphics.UI.Gtk.Button in src/Button.hs, rather than src/Graphics/UI/Gtk/Button.hs. The source file itself is unchanged: it still begins with "module Graphics.UI.Gtk.Button ...".
My initial reaction is "not so excited". Personally, I favor convention over configuration + it makes tooling more complicated. But my personal preferences aside: - Will this lead to further fragmentation in the community (some will like it / some will hate it)? - If the paths are too complicated for a library author to manage, maybe that is an indicator that the imports are too complicate to manage for a user of that library, too? Cheers, Simon