RosettaCodeData/Task/Menu/OCaml/menu.ocaml

10 lines
348 B
Plaintext

let rec select choices prompt = (* "choices" is an array of strings *)
if Array.length choices = 0 then invalid_arg "no choices";
Array.iteri (Printf.printf "%d: %s\n") choices;
print_string prompt;
let index = read_int () in
if index >= 0 && index < Array.length choices then
choices.(index)
else
select choices prompt