+open Format
+
exception InvalidUtf8Codepoint of int
let subscripts = "₀₁₂₃₄₅₆₇₈₉"
let ppf f fmt s =
- Format.fprintf fmt "%s" (f s)
+ pp_print_string fmt (f s)
let pp_overline = ppf overline
let pp_underline = ppf underline
let pp_strike = ppf strike
let pp_subscript = ppf subscript
let pp_superscript = ppf superscript
+let dummy_printer fmt () = ()
-let print_list ?(sep=" ") printer fmt l =
+let pp_print_list ?(sep=dummy_printer) printer fmt l =
match l with
- [] -> ()
- | [ e ] -> printer fmt e
- | e::es -> printer fmt e; List.iter (fun x -> Format.fprintf fmt "%s%a" sep printer x) es
+ [] -> ()
+ | [ e ] -> printer fmt e
+ | e :: es -> printer fmt e; List.iter
+ (fun x ->
+ sep fmt ();
+ fprintf fmt "%a" printer x) es
+
+let pp_print_array ?(sep=dummy_printer) printer fmt a =
+ pp_print_list ~sep:sep printer fmt (Array.to_list a)
+
+let print_list ?(sep=" ") printer fmt l =
+ let sep_printer fmt () =
+ pp_print_string fmt sep
+ in
+ pp_print_list ~sep:sep_printer printer fmt l
+
+let print_array ?(sep=" ") printer fmt a =
+ print_list ~sep:sep printer fmt (Array.to_list a)
+
-let print_array ?(sep=" ") printer fmt l =
- print_list ~sep:sep printer fmt (Array.to_list l)