let pp_assoc nil op pp fmt = function
  | [] -> Format.pp_print_string fmt nil
  | x::xs -> pp fmt x ; List.iter (fun y -> Format.fprintf fmt "@ %s@ %a" op pp y) xs