Gibt es einige theoretische Gründe dafür (wie dass die Typprüfung oder die Typinferenz unentscheidbar werden würde) oder praktische Gründe (zu schwierig, richtig zu implementieren)?
Gegenwärtig können wir Dinge in newtype
Ähnliches
verpacken
newtype Pair a = Pair (a, a)
und dann haben Pair :: * -> *
aber wir können sowas nicht machen λ(a:*). (a,a)
.
(Es gibt einige Sprachen, in denen sie vorkommen, zum Beispiel Scala .)