Scala comme langage de programmation générique


13

Dans l'article «Une étude comparative étendue de la prise en charge des langages pour la programmation générique» par Garcia et al. une comparaison intéressante des fonctionnalités des langages de programmation pour la programmation générique est donnée:

entrez la description de l'image ici

avec la brève explication de la terminologie:

entrez la description de l'image ici

Quelqu'un peut-il tester le support Scala pour la programmation générique dans ce cadre? C'est-à-dire ajouter une colonne dans le premier tableau avec des explications si possible.


3
Republié sur l'informatique . S'il vous plaît ne faites pas ça. Si vous souhaitez déplacer votre question vers un autre site qui vous semble plus approprié, signalez-le à l'attention du modérateur et demandez une migration.
Gilles 'SO- arrête d'être méchant'

2
La réponse exacte est donnée à la p. 17 des « Classes de type en tant qu'objets et implications » d'Oliveira et al.
Artem Pelenitsyn

La référence vient de Twitter après le lien vers la question bêta de CS.SE. Merci à Miles Sabin (@milessabin sur Twitter) et Alexey Romanov.
Artem Pelenitsyn

Jetez un coup d'œil à la bibliothèque informe de Miles Sabins et à sa motivation derrière la lib. Je pense qu'il fait référence à certains articles
AndreasScheinert

Réponses:


7

Comme mentionné dans l' un des commentaires du PO, c'est le tableau qui explique comment Scala se compare pour le support de programmation générique. Lien vers le pdf source

table avec Scala répertoriée

Plus tard, le résumé suivant est fourni:

Scala
En utilisant le modèle CONCEPT, nous pouvons modéliser des concepts multi-types, des contraintes multiples et prendre en charge la modélisation rétroactive. De plus, la prise en charge des implicites par Scala signifie que les inconvénients des solutions Java et C # en termes de surcharge supplémentaire ne s'appliquent pas à Scala. Ainsi, Scala obtient de bons résultats à la fois dans la déduction implicite des arguments et dans les critères de modélisation rétroactive. La section 6 montre que les types associés sont pris en charge dans Scala via les membres de type et les types de méthode dépendants, et les membres de type peuvent également être utilisés comme alias de type.
Comme indiqué dans la section 3, Scala prend en charge les modèles à portée lexicale. De plus, la vérification de type est entièrement modulaire. Les implicits de chevauchement priorisés fournissent un certain support pour la surcharge basée sur le concept comme illustré par le zipWithNexemple dans la section 6.5. Cependant, les modèles qui se chevauchent doivent être structurés en utilisant une hiérarchie de sous-typage, ce qui n'est pas toujours souhaitable. Ainsi, le score de cette fonctionnalité n'est que suffisant. Enfin, Scala prend entièrement en charge les fonctions de première classe et prend également en charge les contraintes d'égalité.
En résumé, Scala se révèle être un langage avec un excellent support pour les fonctionnalités de programmation génériques, réussissant à se comporter au même niveau, voire légèrement mieux, que G (qui a été spécialement conçu comme langage pour la programmation générique dans son ensemble) ou Haskell ( qui a été reconnu comme ayant un très bon support pour la programmation générique).

Et puis dans le résumé:

Les membres de type et les types de méthode dépendants ajoutent une puissance supplémentaire au langage et une combinaison des deux mécanismes permet d'exprimer les types associés. En combinaison avec les implicits, les membres de type et les types de méthode dépendants font de Scala un langage prêt pour la programmation générique à grande échelle.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.