1: import GHC.Dup 2: import Control.Concurrent.MVar 3: import Control.Concurrent 4: 5: main = do 6: v <- newEmptyMVar :: IO (MVar Int) 7: case deepDup (putMVar v 0) of Box a -> a 8: readMVar v >>= print