let rec print_list printer sep ppf = function
      [] -> ()
    | hd :: [] -> printer ppf hd
    | hd :: tl ->
        fprintf ppf "%a%s@ %a"
          printer hd
          sep
          (print_list printer sep) tl