let arg_spec_of_symbols opt_name symbols opt_ref doc =
  (opt_name,
   Arg.Symbol (snd (List.split symbols),
               (fun s -> opt_ref := (key_of_value s symbols))),
   " " ^ doc ^ "   (default "
   ^ (value_of_key !opt_ref symbols) ^ ")")