storePresentsIO :: IOStore s => [Present] -> IO (s [Present])
storePresentsIO ps = do
  store <- newIO []
  forM_ ps $ \x -> do
    old <- getIO store
    putIO store (x : old)
  return store
storePresentsIO :: IOStore s => [Present] -> IO (s [Present])
storePresentsIO ps = do
  store <- newIO []
  forM_ ps $ \x -> do
    old <- getIO store
    putIO store (x : old)
  return store
storePresentsIO ps = do
  store <- newIO []
  forM_ ps $ \x -> do
    old <- getIO store
    putIO store (x : old)
  return store