タプルの第2要素にのみ関数を適用したい

タプルの第2要素にのみ関数を適用したいことがよくあると思います。

Janestreet coreのTupleモジュールにはこれをやる関数が用意されています。

# Core.Tuple.T2.map2;;
- : f:('a -> 'b) -> ('c, 'a) Core.Tuple.T2.t -> ('c, 'b) Core.Tuple.T2.t = <fun>
# Core.Tuple.T2.map2 ~f:(fun x->x+1) (1,1);;
- : (int, int) Core.Tuple.T2.t = (1, 2)

こんな関数あるわけないよなぁ、と思いつつ探してみたら、本当にあってびっくりした。第1要素にのみ適用するmap1や、3組用のT3もある。
Janestreetすげーな。