Haskell neden tür düzeyinde lambda soyutlamaları yapmıyor?


22

Bunun için bazı teorik nedenler (tip kontrolü veya tip çıkarımının kararsız hale geleceği gibi) veya pratik sebepler (düzgün şekilde uygulanması çok zor) var mı?

Şu anda, içine duruma hakim olabilir newtypegibi

newtype Pair a = Pair (a, a)

ve sonra Pair :: * -> *

ama biz böyle bir şey yapamayız λ(a:*). (a,a).

(Onlara sahip bazı diller vardır, örneğin Scala’nın yaptığı gibi )


4
Kullanılacak bir tür tip sistemin seçilmesi, her şeyin tutarlı olması gerektiğinden diğer tip tip sistemleri hariç tutar. Tip seviyesi lambda kategori teorisinde çok garip olurdu ...
tp1

Yanıtlar:


17

Tip seviyesi lambdalarla tip çıkarımı, kararsız olan daha yüksek dereceli birleştirme gerektirir. Bu onlara izin vermeme konusundaki motivasyondur. Ancak diğer kararsız özelliklerde olduğu gibi (GADT'ler için tür çıkarımı gibi), tür imzaları istemek ve izin vermek mümkün olabilir. Bunun birileri tarafından araştırılıp soruşturulmadığından emin değilim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.