> > > basically, what would be really nice is if there were something like > > > registerCommitIO :: IO () -> STM () > > where all IO actions registered with this function (within an atomically > block) are executed exactly once if and only if the atomically block > commits. The IO action is not run within the STM block, notably > > atomically $ do foo; registerCommitIO bar; baz > > is equivalent to > > atomically (do foo; baz) >> bar >
This is easy enough to whip up with a monad transformer over STM. I think the AdvSTM implementations [1] are rather complicated and heavyweight, but they give a general picture of how to proceed. A simple ReaderT with a TChan should do the trick quite nicely. [1] http://www.haskell.org/haskellwiki/New_monads/MonadAdvSTM Regards, Sterl. p.s. as for the issue of the Ord instance, I wonder if tsWord needs to be a TVar or if an IVar or IORef would be sufficient?
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users