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