Скала як мова для загального програмування


13

У роботі "Розширене порівняльне вивчення мовної підтримки загального програмування" Гарсія та ін. наведено цікаве порівняння функцій мов програмування для загального програмування:

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

з коротким поясненням термінології:

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

Чи може хтось перевірити підтримку Scala для загального програмування всередині цього фрейму? Тобто додайте стовпчик до першої таблиці з поясненнями, якщо це можливо.


3
Повідомлення з інформатики . Будь ласка, не робіть цього. Якщо ви хочете перенести своє запитання на інший сайт, який, на вашу думку, є більш підходящим, позначте увагу модератора та попросіть міграцію.
Жил "ТАК - перестань бути злим"

2
Точна відповідь наводиться на с. 17 розділу " Тип класів як об'єкти та наслідки " Олівейри та ін.
Артем Пеленицин

Довідка надходить з Twitter після того, як там проникла посилання на бета-питання CS.SE. Дякуємо Майлзу Сабіну (@milessabin у Twitter) та Олексію Романову.
Артем Пеленицин

Погляньте на бездоганну бібліотеку Сабінса та його мотивацію позаду. Я думаю, посилання на деякі документи
AndreasScheinert

Відповіді:


7

Як згадувалося в одному з коментарів ОП, це таблиця, яка пояснює, як Scala порівнює за підтримкою загального програмування. Посилання на вихідний PDF

таблиця з переліченими Scala

Пізніше надається наступне резюме:

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

А потім у резюме:

Члени типу та залежні типи методів додають мові додаткову потужність, а комбінація двох механізмів дозволяє виражати пов'язані типи. У поєднанні з імпліцитами, члени типу та залежні типи методів роблять Scala мовою готовою до загального програмування в цілому

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.