Apakah ada beberapa alasan teoretis untuk itu (seperti pemeriksaan tipe atau inferensi tipe menjadi tidak dapat dipastikan), atau alasan praktis (terlalu sulit untuk diterapkan dengan benar)?
Saat ini, kita bisa membungkusnya menjadi newtype
seperti
newtype Pair a = Pair (a, a)
dan kemudian Pair :: * -> *
tetapi kita tidak dapat melakukan sesuatu seperti λ(a:*). (a,a)
.
(Ada beberapa bahasa yang memilikinya, misalnya, Scala melakukannya .)
haskell
abstraction
type-systems
lambda
Petr Pudlák
sumber
sumber
Jawaban:
Ketik inferensi dengan jenis level lambdas akan membutuhkan penyatuan urutan yang lebih tinggi yang tidak dapat ditentukan. Ini adalah motivasi untuk melarang mereka. Tetapi seperti yang telah terjadi dengan fitur-fitur lain yang tidak dapat ditentukan (seperti inferensi jenis untuk GADT), dimungkinkan untuk memerlukan tanda tangan jenis dan mengizinkannya. Saya tidak yakin apakah itu sudah diselidiki oleh siapa pun.
sumber