Як згадувалося в одному з коментарів ОП, це таблиця, яка пояснює, як Scala порівнює за підтримкою загального програмування. Посилання на вихідний PDF
Пізніше надається наступне резюме:
Scala
За допомогою шаблону CONCEPT ми можемо моделювати концепції багатьох типів, численні обмеження та підтримувати ретроактивне моделювання. Крім того, підтримка Scala щодо імпліцитів означає, що недоліки рішень Java та C # з точки зору додаткових витрат не стосуються Scala. Таким чином, Scala добре оцінює як виразні умови виведення аргументів, так і критерії зворотного моделювання. У розділі 6 показано, що асоційовані типи підтримуються в Scala через члени типу та залежні типи методів, а члени типу також можуть використовуватися як псевдоніми типів.
Як показано у розділі 3, Scala підтримує лексично розмальовані моделі. Крім того, перевірка типу є повністю модульною. Пріоритетні наслідки перекриття надають деяку підтримку перегрузці на основі концепції, як це проілюстровано zipWithNПриклад у Розділі 6.5. Однак моделі, що перекриваються, повинні бути структуровані за допомогою ієрархії підтипів, що може не завжди бути бажаним. Таким чином, балу за цю особливість достатньо лише. Нарешті, Scala має повну підтримку першокласних функцій, а також підтримує обмеження рівності.
Підсумовуючи, Scala виявляється мовою з чудовою підтримкою загальних функцій програмування, що керують тарифами на тому самому рівні або навіть трохи краще, ніж G (який був спеціально розроблений як мова для загального програмування у великому) або Haskell ( який, як було визнано, має дуже гарну підтримку загального програмування).
А потім у резюме:
Члени типу та залежні типи методів додають мові додаткову потужність, а комбінація двох механізмів дозволяє виражати пов'язані типи. У поєднанні з імпліцитами, члени типу та залежні типи методів роблять Scala мовою готовою до загального програмування в цілому