Como se menciona en uno de los comentarios desde el OP, esta es la tabla que explica cómo Scala compara la compatibilidad con la programación genérica. Enlace a la fuente pdf
Más adelante, se proporciona el siguiente resumen:
Scala
Usando el patrón CONCEPTO podemos modelar conceptos de múltiples tipos, múltiples restricciones y apoyar el modelado retroactivo. Además, el soporte de Scala para implicaciones significa que los inconvenientes de las soluciones Java y C # en términos de la sobrecarga adicional, no se aplican a Scala. Por lo tanto, Scala puntúa bien 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 son compatibles con Scala a través de los miembros de tipo y los 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 es compatible con modelos con alcance léxico. Además, la comprobación de tipo es totalmente modular. Las implicaciones de superposición priorizadas brindan cierto soporte para la sobrecarga basada en conceptos, como se ilustra en el ejemplo zipWithN en la Sección 6.5. Sin embargo, los modelos superpuestos deben estructurarse utilizando una jerarquía de subtipos, lo que puede no ser siempre deseable. Por lo tanto, el puntaje de esta característica solo es suficiente. Finalmente, Scala tiene soporte completo para funciones de primera clase y también admite restricciones de igualdad.
En resumen, Scala resulta ser un lenguaje con un excelente soporte para funciones de programación genéricas, logrando obtener el 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 soporte muy bueno para la programación genérica).
Y luego en el resumen:
Los miembros de tipo y los tipos de método dependientes agregan poder adicional al lenguaje y una combinación de los dos mecanismos permite expresar los tipos asociados. En combinación con implícitos, los miembros de tipo y los tipos de método dependientes hacen de Scala un lenguaje listo para la programación genérica en general