let pp_lst ~sep pp_data fmt lst = let rec aux = function | [] -> () | [ x ] -> pp_data fmt x | x :: r -> pp fmt "%a%a" pp_data x sep (); aux r in aux lst