Simon Peyton-Jones wrote:
Our module system paper has answers to this type of questions, since it deals with the meaning of recursive modules:I quite liked this idea until I thought of this:
module Doc.Pretty.Long( M.f, f ) where import qualified M( f ) import Doc.Pretty.Long as M
f x = x
The second import decl imports all the things exported by
Doc.Pretty.Long. But what does it export? Well, M.f. But what is M.f.
Well, it could be the f coming from 'import M.f'. But wait!
Doc.Pretty.Long exports the locally-defined f too... and the second
import decl will make that be called M.f too.
http://www.cse.ogi.edu/~diatchki/hsmod/
It is implemented in the Programatica Haskell front-end, which thus supports modules importing themselves in particular, and mutually recursive modules in general, without the need for boot .hi files. I wonder when other Haskell implementations are going to catch up? :-)
-- Thomas H
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users