Скала как язык для общего программирования

13

В работе Garcia et al. «Расширенное сравнительное исследование языковой поддержки родового программирования». Дается интересное сравнение возможностей языков программирования для общего программирования:

введите описание изображения здесь

с кратким объяснением терминологии:

введите описание изображения здесь

Может ли кто-нибудь протестировать поддержку Scala для общего программирования в этой среде? Т.е. добавить столбец в первой таблице с пояснениями, если это возможно.

Артем Пеленицын
источник
3
Перемещено на информатику . Пожалуйста, не делай этого. Если вы хотите перенести свой вопрос на другой сайт, который вы считаете более подходящим, пометьте внимание модератора и запросите перенос.
Жиль "ТАК - перестать быть злым"
2
Точный ответ дан на с. 17 из « Типовые классы как объекты и следствия » Oliveira et al.
Артем Пеленицын
Ссылка пришла из Twitter после ссылки на бета-версию CS.SE. Спасибо Майлзу Сабину (@milessabin в Твиттере) и Алексею Романову.
Артем Пеленицын
Взгляните на бесформенную библиотеку Миль Сабинса и его мотивы. Я думаю, что ссылается на некоторые документы
AndreasScheinert

Ответы:

7

Как упомянуто в одном из комментариев от OP, эта таблица объясняет, как Scala сравнивает общую поддержку программирования. Ссылка на источник pdf

таблица со списком Scala

Позже будет предоставлено следующее резюме:

Scala
Используя шаблон CONCEPT, мы можем моделировать многотипные концепции, множественные ограничения и поддерживать ретроактивное моделирование. Кроме того, поддержка Scala для имплицитов означает, что недостатки решений Java и C # в части дополнительных издержек не распространяются на Scala. Таким образом, Scala хорошо зарекомендовал себя как в неявном выводе аргументов, так и в критериях ретроактивного моделирования. В разделе 6 показано, что связанные типы поддерживаются в Scala посредством членов типа и зависимых типов методов, а члены типа также могут использоваться в качестве псевдонимов типов.
Как показано в Разделе 3, Scala поддерживает лексически ограниченные модели. Кроме того, проверка типов является полностью модульной. Приоритеты перекрывающихся приоритетов обеспечивают некоторую поддержку основанной на концепции перегрузки, как показано в zipWithNпример в разделе 6.5. Однако перекрывающиеся модели должны быть структурированы с использованием иерархии подтипов, что не всегда желательно. Таким образом, оценка для этой функции достаточно. Наконец, Scala имеет полную поддержку функций первого класса, а также поддерживает ограничения равенства.
Таким образом, Scala оказывается языком с отличной поддержкой общих функций программирования, способных работать на том же уровне или даже немного лучше, чем G (который был специально разработан как язык для общего программирования в целом) или Haskell ( который был признан, имеет очень хорошую поддержку для общего программирования).

А потом в резюме:

Члены типа и зависимые типы методов добавляют дополнительную мощь языку, а комбинация двух механизмов позволяет выражать связанные типы. В сочетании с имплицитами члены-типы и зависимые типы методов делают Scala языком, готовым для общего программирования в целом.

Сообщество
источник