Cohérence dans les classes de types : comparaison de Swift, Rust, Scala et Haskell
Les classes de types sont un mécanisme populaire pour la programmation générique, utilisé dans des langages comme Haskell, Swift, Rust et Scala. Cependant, la programmation implicite, bien que pratique, peut conduire à des ambiguïtés dans l'inférence de types, compromettant la cohérence (la propriété selon laquelle un programme a exactement une signification). La communauté de recherche est divisée : certains privilégient la résolution contextuelle ; d'autres préconisent des instances globalement uniques pour éviter les ambiguïtés. Cet article compare la manière dont ces quatre langages abordent la cohérence des classes de types, révélant que, malgré les différences syntaxiques, leurs stratégies pour contourner les limites des instances uniques sont étonnamment similaires.