updateUser :: Monad m => (Name -> User -> m a) -> User -> m Msg
updateUser pUser (User name0 mId) = do
    let newId    = mId + 1
    let newUser0 = User name0 newId
    pUser name0 newUser0
    return (mkMsg name0 newId)
updateUser :: Monad m => (Name -> User -> m a) -> User -> m Msg
updateUser pUser (User name0 mId) = do
    let newId    = mId + 1
    let newUser0 = User name0 newId
    pUser name0 newUser0
    return (mkMsg name0 newId)
updateUser pUser (User name0 mId) = do
    let newId    = mId + 1
    let newUser0 = User name0 newId
    pUser name0 newUser0
    return (mkMsg name0 newId)