(** Yet another command line argument library. *) let args = Array.to_list Sys.argv let has ?(args=args) flag = List.mem flag args let count ?(args=args) flag = List.length (List.filter (fun x -> x = flag) args) let param ?(args=args) flag = let rec loop = function a :: b :: etc when a = flag -> Some b | a :: etc -> loop etc | [] -> None in loop args let params ?(args=args) flag = let rec loop result = function a :: b :: etc when a = flag -> loop (b :: result) etc | a :: etc -> loop result etc | [] -> List.rev result in loop [] args