Hindley-Milner is what you get when you add polymorphism to the simply typed lambda calculus, but only allow ∀ to show up at the very outermost layer of a type