Can't you simply define it this way? (I don't think I'm using any new features, so maybe I misunderstood your question.)

        OCaml version 4.00.1

# external id : 'a -> 'b = "%identity";;
external id : 'a -> 'b = "%identity"
# let foo ?(f = id) x = f x;;
val foo : ?f:('a -> 'b) -> 'a -> 'b = <fun>


On Thu, Feb 7, 2013 at 11:22 AM, Ashish Agarwal <agarwal1975@gmail.com> wrote:
I'd like to implement

val foo : ?f:('a -> 'b) -> 'a -> 'b

where the default for f is identity. Is there now a way to do this with all the new features of OCaml?