let rec print_list print sep fmt = function | [] -> () | [e] -> print fmt e | e :: l -> print fmt e; fprintf fmt sep; print_list print sep fmt l