Simon Peyton-Jones wrote:

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.


Our module system paper has answers to this type of questions, since it deals with the meaning of recursive modules:

   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

Reply via email to