Türler küme değildir.
Görüyorsunuz, küme teorisinin türlere uygulanmayan birtakım özellikleri vardır ve bunun tersi de geçerlidir . Örneğin, bir nesnenin tek bir kanonik türü vardır. Birkaç farklı türün bir örneği olabilir, ancak bu türlerden sadece biri onu başlatmak için kullanıldı. Küme teorisinin "kanonik" kümeler nosyonu yoktur.
Alt kümeye neyin ait olduğunu açıklayan bir kuralınız varsa, Set teorisi anında alt kümeler oluşturmanıza olanak tanır . Tip teorisi genellikle buna izin vermez. En diller sahipken Numbertürü veya benzer bir şey, onlar yok bir sahip EvenNumbertürü, ne de bir tane oluşturmak için basit olacaktır. Yani, türün kendisini tanımlamak yeterince kolaydır, ancak var Numberolan herhangi bir s sihirli bir şekilde EvenNumbers'ye dönüştürülmeyecektir .
Aslında, alt kümeleri "oluşturabileceğinizi" söylemek biraz gariptir, çünkü kümeler tamamen farklı bir hayvan türüdür. Küme teorisinde, bu altkümeler zaten onları tanımlayabileceğiniz tüm sonsuz yollarla var olurlar. Tip teorisinde, genellikle herhangi bir zamanda sınırlı (büyükse) sayıda tiple uğraşmayı umuyoruz. Var olduğu söylenen tek tür, tanımlayabildiğimiz her tür değil, aslında tanımladığımız türlerdir.
Kümelerin doğrudan veya dolaylı olarak kendilerini içermesine izin verilmez . Python gibi bazı diller, (Python, daha az düzenli yapılarla türlerini sağlamak type'ın kanonik türüdür typeve objectbir örneğini kabul edilir object). Öte yandan, çoğu dil, kullanıcı tanımlı türlerin bu tür bir hile yapmasına izin vermez .
Setlerin birbiri içine girmeden genellikle üst üste binmesine izin verilir. Bu, tür teorisinde nadirdir, ancak bazı diller onu çoklu kalıtım biçiminde desteklemektedir. Java gibi diğer diller, bunun yalnızca sınırlı bir biçimine izin verir veya tamamen izin vermez.
Boş tür vardır ( alt tür olarak adlandırılır ), ancak çoğu dil bunu desteklemez veya birinci sınıf tür olarak kabul etmez. "Diğer tüm türleri içeren tür" de vardır (buna üst tür adı verilir ) ve küme teorisinin aksine yaygın olarak desteklenir.
Not : Bazı yorumcular daha önce işaret ettikleri gibi (konu sohbete taşınmadan önce), set teorisi ve diğer standart matematiksel yapılarla türleri modellemek mümkündür. Örneğin, tür üyeliğini kümeler olarak modellemek yerine tür üyeliğini ilişki olarak modelleyebilirsiniz. Ancak uygulamada, set teorisi yerine kategori teorisi kullanıyorsanız bu çok daha basittir . Örneğin Haskell kendi tip teorisini böyle modeller.
"Alt tipleme" kavramı, "altküme" kavramından oldukça farklıdır. Eğer Xbir alt tipi olan Y, biz anlamına gelir yerine örneklerini Yörnekleri için Xve çalışmaya devam programı "iş" Bir anlamda. Bu yapısal olmaktan ziyade davranışsaldır, ancak bazı diller (örneğin, Go, Rust, tartışmalı olarak C), ikincisini programcıya veya dil uygulamasına kolaylık nedenleriyle seçmiştir.
avebbu türün üyeleri değil Myclass, alanlar ve türdeki kayıtlar için izomorfiktir ve - böyle bir kayıt alıp dönüştürebilirsiniz bir örneği .abintdoublemyclass