Я согласен с Рамоном, что это делает вещи более непротиворечивыми, поскольку вы можете рассматривать неуниверсальные типы как вырожденный случай типов универсальной арности 0. В случае типов, которые «перегружены» универсальной арностью, это позволяетВы должны быть более точными в отношении того, к какому типу вы обращаетесь:
type T(o:obj) = class end
type T<'t>(t:'t) = class end
let t = T("test")
let t' = T< >("test")
let t'' = T<_>("test")
Не вдаваясь в подробности о разрешении перегрузки, не обязательно очевидно, какой тип t
имеет, но совершенно ясно, какие типы t'
и t''
есть.