Both explicit polymorphic annotations and the polymorphic syntax of locally abstract types are extensions.
http://caml.inria.fr/pub/docs/manual-ocaml/extn.html
See subsections 7.12 and 7.13.

Jacques Garrigue

2013/10/26 10:09 "Norman Hardy" <norm@cap-lore.com>:

On 2013 Oct 25, at 13:44 , Jacques Le Normand <rathereasy@gmail.com> wrote:

I'm surprised noone has pointed out the new type annotation syntax:

let id : type s. s -> s = fun x -> x


I like that syntax, I think.
I suppose that "id : type s. s -> s = fun x -> x" is a let-binding
and that "id : type s. s -> s" is a pattern,
but I cannot get the syntax at http://caml.inria.fr/pub/docs/manual-ocaml/patterns.html
to produce "id : type s. s -> s”.