let print_list printer separator l = let rec iterator = function [] -> "" | [e] -> printer e | e::l -> (printer e)^separator^(iterator l) in iterator l