Ocaml includes "map" as a function expressed in Ocaml, here is how they define it:
let rec map f = function [] -> [] | a::l -> let r = f a in r :: map f l
I not quite sure why they do it this way, I think they use pattern matching because of the the builtin error reporting, let r = f a in r :: map f l could be expressed: f a :: map f l .