Scala como lenguaje para la programación genérica

13

En el documento "Un estudio comparativo extendido de apoyo del lenguaje para la programación genérica" ​​por Garcia et al. Se ofrece una comparación interesante de las características de los lenguajes de programación para la programación genérica:

ingrese la descripción de la imagen aquí

con la breve explicación de la terminología:

ingrese la descripción de la imagen aquí

¿Alguien puede probar el soporte de Scala para la programación genérica dentro de este marco? Es decir, agregue una columna en la primera tabla con explicaciones si es posible.

Artem Pelenitsyn
fuente
3
Publicado en Informática . Por favor no hagas eso. Si desea mover su pregunta a otro sitio que considere más adecuado, marque la atención del moderador y solicite una migración.
Gilles 'SO- deja de ser malvado'
2
La respuesta exacta se da en la p. 17 de “ Clases de tipos como objetos e implicidades ” por Oliveira et al.
Artem Pelenitsyn
La referencia proviene de Twitter después de que el enlace a la pregunta beta de CS.SE apareciera allí. Gracias a Miles Sabin (@milessabin en Twitter) y Alexey Romanov.
Artem Pelenitsyn
Eche un vistazo a la biblioteca sin forma de millas Sabins y su motivación detrás de la biblioteca. Creo que hace referencia a algunos documentos
AndreasScheinert

Respuestas:

7

Como se menciona en uno de los comentarios del OP, esta es la tabla que explica cómo se compara Scala para el soporte de programación genérico. Enlace a la fuente pdf

tabla con Scala en la lista

Más adelante, se proporciona el siguiente resumen:

Scala
Usando el patrón CONCEPT podemos modelar conceptos de tipos múltiples, restricciones múltiples y soportar el modelado retroactivo. Además, el soporte de Scala para implicits significa que los inconvenientes de las soluciones Java y C # en términos de sobrecarga adicional, no se aplican a Scala. Por lo tanto, Scala obtiene buenos resultados tanto en la deducción implícita de argumentos como en los criterios de modelado retroactivo. La Sección 6 muestra que los tipos asociados se admiten en Scala a través de miembros de tipo y tipos de métodos dependientes, y los miembros de tipo también se pueden usar como alias de tipo.
Como se muestra en la Sección 3, Scala admite modelos de ámbito léxico. Además, la verificación de tipo es totalmente modular. Implicits superpuestos priorizados brindan cierto soporte para la sobrecarga basada en conceptos, como lo ilustra zipWithNejemplo en la Sección 6.5. Sin embargo, los modelos superpuestos tienen que estructurarse utilizando una jerarquía de subtipificación, que puede no ser siempre deseable. Por lo tanto, el puntaje para esta característica solo es suficiente. Finalmente, Scala tiene soporte completo para funciones de primera clase y también soporta restricciones de igualdad.
En resumen, Scala resulta ser un lenguaje con excelente soporte para funciones de programación genéricas, logrando tarifas al mismo nivel, o incluso un poco mejor, que G (que fue especialmente diseñado como un lenguaje para programación genérica en general) o Haskell ( que ha sido reconocido tiene un muy buen soporte para la programación genérica).

Y luego en el resumen:

Los miembros de tipo y los tipos de métodos dependientes agregan potencia adicional al lenguaje y una combinación de los dos mecanismos permite que se expresen los tipos asociados. En combinación con implicidades, los miembros de tipo y los tipos de métodos dependientes hacen de Scala un lenguaje listo para la programación genérica en general.

Comunidad
fuente