OCamlの知識で恐縮ですが、これは型注釈であって型の指定ではないはずです。
型の指定でないので以下のコードは型チェックを通りますし、int -> int -> intになります。

```ocaml
# let add (x : 'a) (y : 'b) = x + y;;
val add : int -> int -> int = <fun>
```

まあそこまで厳密性を求めてもしょうがないし、footnoteいれるくらいでもいいかもですが。