Чи є якісь теоретичні причини для цього (наприклад, перевірка типу чи умовивід типу стане нерозбірливою) або практичні причини (занадто складно їх правильно реалізувати)?
Наразі ми можемо обернути речі newtype
подібними
newtype Pair a = Pair (a, a)
а потім мати Pair :: * -> *
але ми не можемо зробити щось подібне λ(a:*). (a,a)
.
(Є деякі мови, якими вони є, наприклад, Scala .)
4
Вибір одного типу типів у користування виключає інші типи систем, оскільки вся справа повинна бути послідовною. Лямбда рівня типу була б дуже дивною в теорії категорій ...
—
tp1,
stackoverflow.com/questions/4922560/… також пов'язаний.
—
Едвард З. Ян