import Control.Monad.Ref
swap :: MonadRef r m => r a -> r a -> m ()
swap xRef yRef = do
x<-readRef xRef
y<-readRef yRef
writeRef xRef y
writeRef yRef x