Why is OCaml convention to use `type t = ... `

I would take exception with calling it a result of some Jane Street convention: I certainly didn’t learn it from Jane Street code, since I rarely if at all use their libraries. Instead, I started doing it because in complex code, you cannot be sure that a datatype will not have constructor-names that conflict with those of other datatypes. And this is something specific to OCaml, since in Standard ML you can just use casts to get around this problem. Combine this with heavy use of functors that produce many (seeming) “copies” of the same type, and using module-paths to disambiguate constructors and type-names becomes instinctive.