これはAdvent Calendarとか関係なくなんとなく書かれた記事です。 ML系言語で型注釈が必要なケース - Qiita にある通り、OCamlには型注釈なしではコンパイルが通らないケースがいくつかある。 そのような場合でも、別の書き方をすることで型注釈なしで済ませる/より少ない型注釈で済ませる方法を紹介する。 GADTs type 'a t = | Int : int -> int t | Bool : bool -> bool t let f : type a. a t -> int -> bool = fun t y -> match t with | Int x -> y >= 2 | Bool x -> x このケースでは、型注釈を付けないと、 Int x の時点で f の型が int t -> int -> bool に確定してしまい、 Bool x : bool t ≠