[Haskell-cafe] Re: Stronger STM primitives needed? Or am I just doing it wrong?

Chris Smith cdsmith at twu.net
Tue Apr 22 20:48:17 EDT 2008

On Tue, 22 Apr 2008 14:48:54 -0700, Ryan Ingram wrote:
> waitFor t0 = do
>     t <- readTVar now
>     if (t < t0) then retry else return ()
> This naive implementation has the problem that the transaction gets
> restarted every time "now" gets updated, even if the new value is still
> less than t0.
> One primitive that would be strong enough is this: retryUntil :: TVar a
> -> (a -> Bool) -> STM ()

Hmm.  This makes me suspicious.  A change to a variable may change the 
transaction such that it never even calls your retryUntil the next time 
around.  Is it really safe to not retry the transaction?

Chris Smith

More information about the Haskell-Cafe mailing list