Pertanyaannya agak bermasalah, karena bergantung pada definisi subjektif dari "lebih baik."
Bahasa yang diketik dengan tergantung seperti Agda , Idris , dan Coq memiliki sistem tipe yang lebih kuat daripada Haskell. Ini artinya, Anda bisa menggunakan tipe dalam bahasa ini untuk membuktikan lebih banyak properti tentang kode Anda daripada di Haskell. Artinya, ada lebih banyak lagi program yang salah yang akan ditangkap.
Namun, ini datang pada harga: jenis inferensi, dan pengujian apakah ada nilai dari jenis yang diberikan, tidak lagi mungkin. Ini berarti untuk bahasa-bahasa ini, Anda perlu secara eksplisit membuat anotasi kode Anda dengan tipe. Pada dasarnya ini bermuara pada menulis bukti kebenaran Anda sendiri untuk kode Anda.
Jadi, apakah bahasa-bahasa ini "lebih baik" dari pada Haskell? Mereka dapat memeriksa bukti tingkat lanjut untuk kode Anda, tetapi mereka tidak dapat secara otomatis membuktikan properti tentang kode Anda seperti yang Haskell bisa.
Bahasa penelitian lain yang "lebih baik" dari Haskell adalah LiquidHaskell . Ini pada dasarnya adalah Haskell dengan tipe penyempurnaan yang dibaut di atas, diurai dari komentar khusus.
Jenis perbaikan memungkinkan Anda memperbaiki jenis dengan properti. Misalnya, alih-alih memiliki Int
, Anda dapat menentukan {i : Int | i > 0}
, memberikan tipe semua bilangan bulat positif. Jenis inferensi dapat dipilih dengan jenis penyempurnaan, tetapi Anda tidak dapat membuktikan sebanyak mungkin properti kebenaran dengan mereka dengan jenis bergantung.
Ada sistem jenis penyempurnaan lain di luar sana, tapi saya tidak terlalu akrab dengan mereka.