Bir tür, hesaplamaların bir özelliğidir. Kolonun sağ tarafına yazdığın şey bu.
Bu konuda ayrıntılı olarak anlatayım. Terminolojinin tamamen standart olmadığını unutmayın: Bazı makaleler veya kitaplar belirli kavramlar için farklı kelimeler kullanabilir.
MN
- xy
- λx.M
- uygulama, arity 2, yazılıMN
Bir terim, sözdizimsel bir yapıdır. Bir anlambilim, terimlerle hesaplamalarla ilgilidir. Semantik birçok türü en yaygın olarak bulunmaktadır operasyonel (terimler diğer şartlar dönüştürülebilir açıklayan) ya da denotasyonel (genellikle bir dizi teori inşa bir boşluk, bir transformasyon ile terimleri tarif eder).
Bir tür , terimlerin bir özelliğidir. Bir tür sistemi Türlenmemiş hesabı için terimler olan türleri sahip olan tarif etmektedir. Matematiksel olarak, özünde, bir tür sistemi terimler ve türler arasındaki ilişkidir. Daha doğru olarak, bir tür sistemi, bağlamlar tarafından indekslenen bu tür ilişkilerin ailesidir - tipik olarak, bir bağlam en azından değişkenler için tipler sağlar (yani bir bağlam, değişkenlerden türlere kadar kısmi bir fonksiyondur), tüm serbest değişkenleri için bir tür sağlayan bağlamlarda. Bir tür ne tür bir matematiksel nesne tür sistemine bağlıdır.
Bazı tip sistemler, kesişim, birlik ve kavrama gibi küme teorisi kavramlarını kullanarak, kümelerle türlerle tanımlanır. Bunun bilinen matematiksel temellere dayanma avantajı vardır. Bu yaklaşımın bir sınırlaması, eşdeğer tipler hakkında muhakeme yapmasına izin vermemesidir.
τ
Basitçe yazılan lambda hesabını tanımlayan terimler ve türler arasındaki ilişki genellikle yazım kuralları ile tanımlanır . Yazma kuralları, bir tür sistemi tanımlamanın tek yolu değildir, ancak ortaktır. Kompozisyon tipi sistemler için iyi çalışırlar, yani bir terimin türlerinin subter türlerinden yapıldığı tip sistemler. Yazma kuralları bir tür sistemi indüktif olarak tanımlar: her bir yazma kuralı, formüllerin yatay kuralın üstünde herhangi bir örneği için kuralın altındaki formülün de geçerli olduğunu belirten bir aksiyomdur. Bkz yazarak kurallarını okumak için nasıl? daha fazla ayrıntı için. Turing tam tür yazılı lambda matematiği var mı? aynı zamanda ilgi de olabilir.
Γ⊢M:τMτΓ
x:τ∈ΓΓ⊢x:τ(Γ)Γ,x:τ0⊢M:τ1Γ⊢λx.M:τ0→τ1(→I)Γ⊢M:τ0→τ1Γ⊢N:τ0Γ⊢MN:τ1(→E)
ABλx.λy.xy(A→B)→A→B(→I)(→E)(Γ)
Basitçe yazılı lambda hesabının türlerini set olarak yorumlamak mümkündür. Bu, türler için bir terimsel anlambilim vermek anlamına gelir. Temel terimler için iyi bir terimbilimsel anlambilim, her bir terim için, her türden bir terimin bir üyesini atayacaktır.
Sezgisel tip teorisi (aynı zamanda Martin-Löf tip teorisi olarak da bilinir), tip hesaplarında çok daha fazla elemana sahip olduğu için basitçe yazılan lambda matematiğinden daha karmaşıktır (ve aynı zamanda temel terimlere birkaç sabit ekler). Ancak temel ilkeler aynıdır. Martin-Löf tipi teorisinin önemli bir özelliği, türlerin temel terimleri içerebilmesidir ( bağımlı türlerdir ): temel terimler evreni ve türlerin evreni aynıdır, ancak basit sözdizimsel kurallarla ayırt edilebilirler (genellikle sıralama, yani yeniden yazma teorisinde terimlere göre sıralama yapma).
:
Çoğu tip sisteme, onları matematiğin temelleri ile ilişkilendirmek için set-teorik anlambilim verilmiştir.
Programlama dilleri ve matematiğin temelleri arasında nasıl bir ilişki vardır? ve
İşlev türlerinin anlamsal ve sözdizimsel görüşleri arasındaki fark nedir? burada ilgi çekici olabilir. Tip teorisini matematiğin bir temeli olarak kullanma konusunda da çalışmalar yapılmıştır - set teorisi tarihi temeldir, ancak tek olası seçenek bu değildir. Homotopi tipi teorisi bu yönde önemli bir dönüm noktasıdır: Homotopi teorisi açısından kasıtlı sezgisel tip teorisinin anlamını tanımlar ve bu çerçevede küme teorisini kurar .
Benjamin Pierce'in Kitapları Türleri ve Programlama Dilleri ve İleri Düzeyleri Türlerinde ve Programlama Dillerinde Konular'ı öneririm . Resmi matematiksel akıl yürütmeye temel aşinalıktan başka bir önkoşulu olmayan herhangi bir lisans öğrencisine erişilebilirler. TAPL birçok tip sistem tanımlamaktadır; bağımlı türler ATTAPL'ın 2. bölümünün konusudur.