hirarchical modules

Iavor Diatchki diatchki@cse.ogi.edu
Wed, 28 May 2003 17:34:23 -0700


i was wondering how final is the design of the hirarchical module system 
for haskell?  i have been working on the monad library for the past week 
or so and this is my first experience with the hirarchical module system
in a real project. i must say that i find it very cumbersome.

here is why:  the whole monadic library is in the same directory, but 
since there is no way to use relative names, all the imports use the 
rather long fully qualified name.  things like:

import Control.Monad.X.ReaderT

are very common. and if the hirarchy gets deeper, names will get longer.
while the verbosilty is annoying there is a more serious problem. 
moving code around is very work intensive (and error prone).  for 
example, when i decide that what i have is stable enough i'd like to 
move it to the Control.Monad part of the library (i.e. get rid of the 
X).  that means that i have to go and change all the imports, and all 
the module names.

of course i have a haskell lexer at my disposition so i have a little 
program to do that for me, but that solution seems very unsatisfactory.

and there seems to be a rather obvious solution to this problem:
1. allow for imports relative to the location of the importing module
2. remove the requirement that the path to a module is hardcoded in the 
module name.

i am now hoping that someone will say: yes we already tought of that and 
it is indeed supported...
any thoughts?