OCamlは強く型付けされた静的型付け言語ですが、型推論機能のお陰で態々型を明示する必要はありません。
が、個人的には型はコードを読む際のドキュメントとしての役割のほうが重要です。
なので省略せずに明示したいのですが、意外と型の明示の仕方はググってもヒットしてきません。ということで備忘録です。

サンプルとして、string型の数字と、int型の数値を受け取って、それぞれfloatに変換して加算してその値を返す関数を定義しました。

  • 型を明示したバージョン
utop # let a (b:string) (c: int): float = float_of_string(b) +. float_of_int(c);;
val a : string -> int -> float = <fun>
utop # assert( (a "1" 2) = 3.0 );;
- : unit = ()
  • 型を省略したバージョン
utop # let a b c = float_of_string(b) +. float_of_int(c);;
val a : string -> int -> float = <fun>
utop # assert( (a "1" 2) = 3.0 );;
- : unit = ()

型を明示した場合と省略した場合でインタフェースがちゃんと同じになっていることが分かります。