Вопрос несколько проблематичен, поскольку опирается на субъективное определение «лучше».
Языки с независимой типизацией, такие как Agda , Idris и Coq, имеют более сильную систему типов, чем Haskell. Это означает, что вы можете использовать типы в этих языках, чтобы доказать больше свойств вашего кода, чем в Haskell. То есть есть более неправильные программы, которые будут пойманы.
Однако это происходит по цене: вывод типа и проверка существования каких-либо значений данного типа больше невозможны. Это означает, что для этих языков вам необходимо явно аннотировать ваш код типами. По сути это сводится к написанию собственных доказательств правильности вашего кода.
Так эти языки "лучше", чем Haskell? Они могут проверить расширенные доказательства правильности вашего кода, но не могут автоматически подтвердить свойства вашего кода, как это может сделать Haskell.
Еще один язык исследований, который "лучше", чем Haskell, - это LiquidHaskell . В основном это Haskell с типами уточнений, прикрепленными сверху, проанализированными из специальных комментариев.
Типы уточнения позволяют уточнять типы с помощью свойств. Например, вместо Int
указания можно указать {i : Int | i > 0}
тип всех положительных целых чисел. Вывод типа разрешаем с типами уточнения, но вы не можете доказать столько свойств корректности с ними, сколько вы можете с зависимыми типами.
Существуют и другие системы уточнения, но я не очень знаком с любой из них.