
I vaguely recall a brief discussion of this long ago, but don't see any reference to it on the libraries web page. What I had in mind is something like:
package Graphics.GL module Foo (...) where
import X import Bar.Y import Z ...
where the first conversion is
module-name <- package-name ++ "." ++ module-name
the larger issue would be how to convert imports to qualified imports (and module exports to qualified exports). i think (only my opinion) that something like:
import X
should be qualified to
import Graphics.GL.X as X
unless Graphics.GL.X doesn't exist, in which case it gets defaulted to
import X
This is an interesting suggestion. However, I'd like to see if people really think that writing out the full module names is really a problem in practice - in my (limited) experience with the hierarchical libraries so far I don't mind writing out the full module names in import lists at all, and I even quite like to see the module names written out in full. On the other hand, I haven't been working with any modules that go more than 3 deep in the hierarchy, so I'd like to hear feedback from someone writing a library with multiple modules that lives deep in the hierarchy (Sven - perhaps you qualify with Graphics.Rendering.OpenGL.GL?). But I guess the packages concept helps when you want to graft a subtree of modules from one place in the hierarchy to another, right? I must admit I don't like the idea of defaulting to importing X if <package>.X doesn't exist, I'd prefer the two cases to be syntactically distinct. Perhaps the convention should be that '.X' means '<package>.X', and plain X is left alone. (oh, and there have been various other suggestions along these lines - have a look back through the mailing list archives). Cheers, Simon