Существуют ли для этого какие-либо теоретические причины (например, проверка типов или вывод типов стали бы неразрешимыми) или практические причины (слишком трудно осуществить должным образом)?
В настоящее время мы можем обернуть вещи newtype
как
newtype Pair a = Pair (a, a)
а затем есть Pair :: * -> *
но мы не можем сделать что-то подобное λ(a:*). (a,a)
.
(Есть некоторые языки, в которых они есть, например, в Scala .)
4
Выбор одного типа системы типов в использовании исключает другой тип систем типов, так как все это должно быть согласованным. Тип уровня лямбда был бы очень странным в теории категорий ...
—
tp1
stackoverflow.com/questions/4922560/… также связано.
—
Эдвард З. Ян