Soru biraz sorunludur, çünkü “daha iyi” nin öznel bir tanımına dayanır.
Agda , Idris ve Coq gibi bağımlı olarak yazılan diller Haskell'den daha güçlü bir tür sistemine sahiptir. Bu, kodunuz hakkında Haskell'den çok daha fazla özellik kanıtlamak için bu dillerdeki türleri kullanabileceğiniz anlamına gelir. Yani, yakalanacak daha yanlış programlar var.
Ancak, bunun bir bedeli vardır: tür çıkarımı ve belirli bir türdeki herhangi bir değerin var olup olmadığını test etmek artık mümkün değildir. Bu, bu diller için kodunuzu türlerle açıkça açıklama yapmanız gerektiği anlamına gelir. Esasen bu, kodunuz için kendi doğruluk kanıtlarınızı yazmakla ilgilidir.
Peki bu diller Haskell'den "daha iyi" mi? Kodunuz için gelişmiş doğruluk kanıtlarını kontrol edebilirler, ancak Haskell'in yapabileceği şekilde kodunuzla ilgili özellikleri otomatik olarak kanıtlayamazlar.
Haskell'den "daha iyi" olan bir başka araştırma dili de LiquidHaskell'dir . Bu temelde özel yorumlardan ayrıştırılmış rafine türleri ile Haskell.
Ayrıntılandırma türleri, özellikleri olan türleri daraltmanıza olanak tanır. Örneğin, bir yerine , tüm pozitif tamsayıların türünü Int
belirtebilirsiniz {i : Int | i > 0}
. Tür çıkarımı, ayrıntılandırma türleriyle kararlaştırılabilir, ancak bunlarla bağımlı türlerde olabildiğince fazla doğruluk özelliği kanıtlayamazsınız.
Orada başka arıtma tipi sistemler var, ama bunların hiçbirine çok aşina değilim.