open Core open Option.Let_syntax let join_str_list ~sep = function | [] -> "" | s :: ss -> List.fold ss ~init:s ~f:(fun acc s -> acc ^ sep ^ s) type cmd = { args : string; opts : unit -> string list; next : (string -> (string, cmd) Either.t) option; call : string list -> bool; } let set_opt_cmd opt setting = { args = "