Scanf.scanf "%s" (fun s -> let n = String.length s in let rec loop i cur op acc = if i = n then (if op = '+' then acc * cur else acc + cur) else if s.[i] = '+' || s.[i] = '*' then ( let acc = if op = '+' then acc * cur else acc + cur in loop (i + 1) 0 s.[i] acc ) else loop (i + 1) (cur * 10 + int_of_char s.[i] - 48) op acc in loop 0 0 ' ' 0 |> Printf.printf "%d\n" )