On Wed, 2005-08-03 at 12:07 -0500, Srinivas Nedunuri wrote: > > > I was wondering what advice folks had. In particular, what are the > > > disadvantages to doing everything in the IO monad - ie why even bother > > > with the ST monad? > > > > The most obvious disadvantage is that the IO monad has no equivalent > > of runST. > OK, I'm missing something here. What is the big deal about runST? Can I not > get the IO equivalent by simply running the program at the top level > (assuming I don't have multiple threads going). Do you have a practical > example of needing runST in several places in your program?
Having recently used the MonadReader and MonadState classes, I got the impression that ST should actually be deprecated. It seems to me that they are a relic from the time when there were no threads, i.e. when everything was in a single IO monad and you couldn't run another IO computation in independently. Nowadays, you can use one of the MonadState monad if you want lazy computation (on top of which you can implement state read and write accesses similar to IORefs) or IO-enabled computation (if you use MonadState.StateT and embed an IO monad at the core). Is this view correct? If not, could there be a comment as to what ST is useful (rather than a reference to a full blown paper that pre- dates the MonadState,... libraries). Axel. _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell