MVar swap

Georg Martius mai99dgf at
Tue Jan 20 16:44:36 EST 2004


I took a look at the implementation of the MVar function swap and I am 
just woundering where the atomicy comes from.

-- |Swap the contents of an 'MVar' for a new value.
swapMVar :: MVar a -> a -> IO a
swapMVar mvar new =
   block $ do
     old <- takeMVar mvar
     putMVar mvar new
     return old

Is it really just the Exception block, that makes it not interruptable?


More information about the Haskell-Cafe mailing list