learnUserInfo :: UserInfo -> IrcConnection -> IrcConnection
learnUserInfo ui conn =
  case userHost ui of
    Nothing -> conn
    Just host ->
      let update Nothing = Just defaultIrcUser { _usrHost = Just host }
          update (Just u) = Just $! set usrHost (Just host) u
      in over (connUsers . at (userNick ui)) update conn
learnUserInfo :: UserInfo -> IrcConnection -> IrcConnection
learnUserInfo ui conn =
  case userHost ui of
    Nothing -> conn
    Just host ->
      let update Nothing = Just defaultIrcUser { _usrHost = Just host }
          update (Just u) = Just $! set usrHost (Just host) u
      in over (connUsers . at (userNick ui)) update conn
learnUserInfo ui conn =
  case userHost ui of
    Nothing -> conn
    Just host ->
      let update Nothing = Just defaultIrcUser { _usrHost = Just host }
          update (Just u) = Just $! set usrHost (Just host) u
      in over (connUsers . at (userNick ui)) update conn