Type Inference with Rank 1 Polymorphism for Type-Directed Compilation of ML

This paper defines an extended polymorphic type system for an ML-style programming language, and develops a sound and complete type inference algorithm. Different from the conventional ML type discipline, the proposed type system allows full rank 1 polymorphism, where polymorphic types can appear in other types such as product types, disjoint union types and range types of function types.

See post below, I guess I should study this.