let list2_to_string (f : 'a -> string) (separator : string) : 'a list -> string =
let rec list2_to_string_rec = function
[] -> ""
| [h] -> f h
| h::t ->
"pair("^(f h)^separator^(list2_to_string_rec t)^")"
in
list2_to_string_rec