Tip sistemler için bir ifade hiyerarşisi var mı?


23

Karmaşıklık teorisindeki geniş kapsamlı hiyerarşilerden esinlenerek, bu tür hiyerarşilerin tip sistemleri için de mevcut olup olmadığını merak ettim. Bununla birlikte, şu ana kadar bulduğum iki örnek, hiyerarşilerden ziyade (sıralı ve daha etkileyici tip sistemlerle) kontrol listelerine (dik özelliklere sahip) benzer.

Bulduğum iki örnek Lambda küpü ve k dereceli polimorfizm kavramı . Birincisi üç seçenekli bir kontrol listesidir, ikincisi gerçek bir hiyerarşidir (k'nın belirli değerleri için k'nın sıralı olduğuna inanıyorum). Bildiğim tüm diğer tip sistem özellikleri çoğunlukla dikey.

Bu kavramlarla ilgileniyorum çünkü kendi dilimi tasarlıyorum ve şu anda mevcut tip sistemler arasında nasıl sıralandığını merak ediyorum (tip sistemim bildiğim kadarıyla biraz sıradışı).

Tipik sistemlerin bana neden kontrol listeleri gibi göründüğünü açıklayabilen, “ifade edilebilirlik” kavramının biraz belirsiz olabileceğini fark ediyorum.


4
Eminim ki sert ve hızlı ifade karşılaştırmaları sadece daha teorik tip sistemler arasında yapılabilir. Tam bir programlama dili tasarlıyorsanız, mevcut diller / formalizm ile özellik bazında karşılaştırma yapabilirsiniz. Ne yazık ki, birçok özellik diğer özellikler açısından kodlanabildiği için, bu önemsiz bir iş olmayacaktır. Scala'nın veya Haskell'inki gibi fantazileriniz varsa, ifade açısından iyi iş çıkardınız.
Dave Clarke,

3
Bu blog yazısını "Programlama dilleri nasıl karşılaştırılır" konusuna yazmam gerekiyor.
Andrej Bauer

@Andrej Bauer: Bu, burada zaten mevcut olan cevap ve açıklamalara ilginç bir katkı olacaktır. 'Etkileyiciliğin' nasıl tanımlanabileceği hakkında çok şey öğrendim - belki de bunun yerine sormalıydım ...
Alex ten Brink

Birkaç yerde kullanılan rütbe-2 polimorfizmini gördüm. Şu an hatırladığım bir şey ise Lammel, Peyton-Jones, Kazanını Hurda Et, 2003.
Radu GRIGore

2
@Radu GRIGore: Sıra-2 polimorfizmi önemlidir, çünkü tip argümanlarının, her zamanki dualite tarafından varoluş tiplerini Kilise şifrelemelerine göre modellemesine izin veren, iki-çelişkili konumda görünmesine izin verir . Sıra-3 sadece tekrar evrensel bir nicelik verir ve oradan alternatif olur, bu nedenle karşılaştırmada çok az anlamlı güç vardır.
CA McCann

Yanıtlar:


22

Bir tip sistemi için isteyebileceğiniz birkaç "ifade" hissi vardır.

  1. Belirli bir tip sistemde hangi matematiksel fonksiyonları ifade edebilirsiniz. Örneğin, basitçe yazılan lambda hesabında, tüm hesaplanabilir fonksiyonlar ifade edilemez. Aynısı Sistem de geçerlidir , ancak kesinlikle daha fazla fonksiyon ifade edilebilir. Turing-tamamlanmış diller için sistemler yazdığınızda, bu çok ilginç değildir.F

  2. Sistem sistem B'de yazılmış her programı kontrol edin . Temel olarak, Cody'nin PTS'ler için ilk güç kavramının ne olduğudır. Yine, Sistem F bu sırayla STLC'den daha güçlü, çünkü her STLC programı Sistem F'de yazıyor . Benzer şekilde, alt tipi olan bir sistem, olmayan bir sistemden daha güçlü olacaktır.birBFF

  3. A dilinde yazılan bir programın B sisteminde yazmasına izin veren , ancak bunun tersi olmayan bir programa izin veren yerel dönüşümler var mı ? birB

  4. Bir tip sistem diğerinden daha güçlü özellikler garanti ediyor mu? Örneğin, doğrusal tip sistemler yalnızca daha fazla programı reddeder , ancak bu, kabul ettikleri programlar hakkında daha güçlü açıklamalar yapmalarını sağlar.

Ne yazık ki, @cody'nin tartıştığı gibi, Barendregt'in lambda küpü dışında, bu kavramları kategorize etmek ya da biçimlendirmek için çalışmalar olduğuna inanmıyorum.


3
Ben onun demek "Felleisen en anlamlılık kağıt" tarafından tahmin On Programlama Dilleri Expressive Gücü .
Martin Berger

Evet kesinlikle. Cevabın o kısmını açıklığa kavuşturdum.
Sam Tobin-Hochstadt

13

Sorunuza tatmin edici bir cevabım olduğundan emin değilim, ancak lambda küpünde bulunan sistemlerin bir genellemesi olan Saf Tip Sistemler'i düşünürseniz ( klasik Barendregt metninde biraz tarihli bir özet bulunabilirse, kapsamlı bir inceleme) ) o zaman birkaç doğal hiyerarşi kavramı vardır:

  1. Γbir t:TΓB t:TΓ,tT*:*(*,*,*)PTS anlamında diğer her PTS'den ona bir morfizm olduğunu. Bu, nihai PTS'nin en etkileyici sistem olduğu bir tip sistemin etkililiğinin bir ölçüsü olarak görülebilir.

  2. birBbirFωECC

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.