I am trying to understand why OCaml shies away from what I would call an existential type declaration. They seem to add extra BNF productions to restrict its general use. It is plausible to me that the more general and simpler rules that I thinkI understand are incompatible with type inferencing.
I see several places where there are explicitly introduced scopes in which an identifier represents some type whose nature is entirely obscure. In such scopes other identifiers may be bound to such mysterious values and as such they may be passed to and received from functions. The OCaml community calls them ‘abstract types’. Here are some places in the syntax where they arise: