let validate_int s =
  if String.length s = 0 then Left "empty"
  else
    let rec all_digits i =
      if i >= String.length s then true
      else
        let c = s.[i] in
        if c >= '0' && c <= '9' then all_digits (i + 1)
        else false
    in
    if all_digits 0 then Right (int_of_string s)
    else Left ("not a number: " ^ s)

let process inputs =
  List.fold_left (fun (errs, vals) s ->
    match validate_int s with
    | Left _ -> (errs + 1, vals)
    | Right v -> (errs, vals + v)
  ) (0, 0) inputs

;;

let (errs, sum) = process ["12"; "abc"; "5"; ""; "100"; "x"] in
errs * 100 + sum
