putUser :: Ord k => MVar (Map.Map k b) -> k -> b -> IO b
putUser mv name0 user = do
    m <- takeMVar mv
    let newM = Map.insert name0 user m
    putMVar mv newM
    return user
putUser :: Ord k => MVar (Map.Map k b) -> k -> b -> IO b
putUser mv name0 user = do
    m <- takeMVar mv
    let newM = Map.insert name0 user m
    putMVar mv newM
    return user
putUser mv name0 user = do
    m <- takeMVar mv
    let newM = Map.insert name0 user m
    putMVar mv newM
    return user