Lets parse the definition of eval.
textsyntactic category
let rec eval : type a. a term -> a = ⋯ (eval x)is a definition
eval : type a. a term -> a = ⋯ (eval x)is this extension of a let-binding

bug report 6503 is hereby fixed! (Thanks Yallop)

Yet I am surprised that they consider this construct sugar. I shall have to understand what they translate this into!


Behold:
let rec f : type t1 t2. t1 * t2 list -> t1 = 
   function (a, b) -> a;; 
 f (4, []);; ==> 4
let f : type t1 t2. t1 * t2 -> t1 = 
   function (a, b) -> a;; 
Desugaring:
let f : 't1 't2. 't1 * 't2 -> 't1 = 
  fun (type t1) (type t2) -> (function (a, b) -> a : t1 * t2 -> t1);;
OCaml likes the above. Parsing that:
textsyntactic category
let f : 't1 't2. 't1 * 't2 -> 't1 = ⋯ is a definition
f : 't1 't2. 't1 * 't2 -> 't1 = ⋯ is this extension of a let-binding
't1 't2. 't1 * 't2 -> 't1is a poly-typexpr
fun (type t1) (type t2) -> (function (a, b) -> a : t1 * t2 -> t1)is an expr
(type t1) (type t2) -> (function (a, b) -> a : t1 * t2 -> t1)is a multiple-matching
(type t1)is this extension of a parameter
It is syntactically like a parameter but really not a parameter.