On Sunday 07 November 2004 16:18, you wrote: > Adrian Hey wrote: > >I'm not at all convinced, having not seen or groked either the "before" or > >"after" code. Perhaps you could show how this would work with an even > > simpler example, the one that I posted concerning the use of oneShot to > > create a top level (I.E. exportable) userInit. > > > >AFAICS the only alternative to.. > > > > userInit <- oneShot realInit > > > >is to export realInit, have users create their own userInit, and then pass > >that around as an argument to everything that might make use of userInit. > > The way I would do it would be to have an init function that > initialises an abstract data structure. Because the results of > the init function are stateless and not in a global variable it > does not matter if the user calls it twice.
Yes, whenever possible I would use this approach. Unfortunately, there are libraries (or just modules) that need to do some IO action in order to produce the (A)DT. In this case it _will_ make a difference how often you call it. But then this is just how IO actions are by nature, isn't it? Ben _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell