let rec pp_fold_call nil op pp fmt = function
  | [] -> Format.pp_print_string fmt nil
  | [x] -> pp fmt x
  | x::xs -> Format.fprintf fmt "@[<hov 1>%s(%a,@,%a)@]" 
      op pp x (pp_fold_call nil op pp) xs