var :: ReadP Var
var = do
  first <- satisfy isVarInitChar
  rest  <- munch isVarRestChar
  return $ Var (first:rest)
var :: ReadP Var
var = do
  first <- satisfy isVarInitChar
  rest  <- munch isVarRestChar
  return $ Var (first:rest)
var = do
  first <- satisfy isVarInitChar
  rest  <- munch isVarRestChar
  return $ Var (first:rest)