If only to satisfy the overall goal, then you can do
let f (l : char list) : string =
String.concat "" (List.map Char.escaped l)
If it must look like the original ones, then you can do
let f (l : char list) : string =
let rec aux (l : char list) (acc : string) : string =
match l with
| [] -> acc
| x :: xs -> aux xs (acc ^ (Char.escaped x))
in
aux l ""
Note that it might not be very efficient.