getUser :: Ord k => MVar (Map.Map k a) -> k -> IO (Maybe a)
getUser mv name0 = do
    m <- takeMVar mv
    let u = Map.lookup name0 m
    putMVar mv m
    return u
getUser :: Ord k => MVar (Map.Map k a) -> k -> IO (Maybe a)
getUser mv name0 = do
    m <- takeMVar mv
    let u = Map.lookup name0 m
    putMVar mv m
    return u
getUser mv name0 = do
    m <- takeMVar mv
    let u = Map.lookup name0 m
    putMVar mv m
    return u