let list elt sep f =
let rec loop =
function | [] -> () | x :: xs -> (pp f sep; elt f x; loop xs)
in
function
| [] -> ()
| [ x ] -> elt f x
| x :: xs -> (elt f x; loop xs)