La pregunta es algo problemática, ya que se basa en una definición subjetiva de "mejor".
Los lenguajes de tipo dependiente como Agda , Idris y Coq tienen un sistema de tipos más fuerte que Haskell. Esto significa que puede usar los tipos en estos idiomas para probar estrictamente más propiedades sobre su código que en Haskell. Es decir, hay más programas incorrectos que serán capturados.
Sin embargo, esto tiene un precio: la inferencia de tipos y probar si existen valores de un tipo dado, ya no son posibles. Esto significa que para estos idiomas, debe anotar explícitamente su código con tipos. Esencialmente, esto se reduce a escribir sus propias pruebas de corrección para su código.
Entonces, ¿son estos idiomas "mejores" que Haskell? Pueden verificar pruebas avanzadas de corrección para su código, pero no pueden probar automáticamente las propiedades de su código de la manera en que Haskell puede hacerlo.
Otro lenguaje de investigación que es "mejor" que Haskell es LiquidHaskell . Esto es básicamente Haskell con tipos de refinamiento atornillados en la parte superior, analizados a partir de comentarios especiales.
Los tipos de refinamiento le permiten refinar tipos con propiedades. Por ejemplo, en lugar de tener un Int
, puede especificar {i : Int | i > 0}
, dando el tipo de todos los enteros positivos. La inferencia de tipos es decidible con los tipos de refinamiento, pero no puede probar con ellos tantas propiedades de corrección como con los tipos dependientes.
Existen otros sistemas de tipo de refinamiento, pero no estoy muy familiarizado con ninguno de ellos.