Tip sınıfı
Ad hoc çok biçimlilik mekanizması: bir tipin desteklemesi gereken işlemler kümesini tanımlarsınız, ardından bunları farklı tipler için ayrı ayrı gerçekleştirirsiniz.
Kavramı Haskell icat etti (Wadler ve Blott, 1989). Rust bunu “trait” adıyla benimsedi. Scala’da implicit’ler / bağlamsal soyutlamalar üzerinden “typeclass kalıbı” vardır. Örnek: Show tip sınıfı show :: a -> String işlevini ister; bunu gerçekleştiren her tip yazdırılabilir. Nesne yönelimli arayüzlerden farkı üç noktadadır: (a) gerçekleştirimler dışarıdan eklenebilir, yani tip tanımlandıktan sonra bir örnek (instance) verilebilir; (b) dağıtım statiktir, sıfır maliyetlidir; (c) tip sınıfı yöntemleri soyut tipin kendisini döndürebilir (read :: String -> a). Modern dil tasarımlarının itici güçlerinden biridir.