On Fri, Oct 22, 2004 at 05:13:02PM -0700, John Meacham wrote: > > What happens when there are cicular dependencies between modules. Perhaps > > the circular dependency is only because of sharing of types, and there is a > > valid order for the initialization. But, is it easy for the compiler to > > determine this? > > I don't see a problem with letting the compiler run them in an arbitrary > order. I don't see much need for ordering things intermodule as long as > the actions are executed in order within each module.
Although many programs will not depend on the ordering, others can. What if one module initialized a file, and another was expecting it to be setup correctly. Or, perhaps there is a shared IORef that needs to be initialized. Once IO is in the picture, the dependency computation can become complex. In general, if module A references module B, then module B's initialization should have finished before module B's. As long as there are no circular references, it isn't difficult to come up with a valid ordering (aside from references to external entities). When A and B each refer to the other, the compiler can't automatically determine which initialization must be done first. Dave _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users