>
>
> 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

Reply via email to