Scala jako język programowania ogólnego

13

W artykule „Rozszerzone badanie porównawcze obsługi języka dla programowania ogólnego” Garcia i in. interesujące porównanie funkcji języków programowania dla programowania ogólnego:

wprowadź opis zdjęcia tutaj

z krótkim wyjaśnieniem terminologii:

wprowadź opis zdjęcia tutaj

Czy ktoś może przetestować obsługę Scala dla ogólnego programowania w tym frameworku? Tj. Dodaj kolumnę do pierwszej tabeli z wyjaśnieniami, jeśli to możliwe.

Artem Pelenitsyn
źródło
3
Reposted on Computer Science . Proszę nie rób tego. Jeśli chcesz przenieść pytanie do innej witryny, która Twoim zdaniem jest bardziej odpowiednia, oznacz moderatora i poproś o migrację.
Gilles 'SO - przestań być zły'
2
Dokładna odpowiedź znajduje się na str. 17 z „ Klasy typów jako obiekty i implikacje ” autorstwa Oliveira i in.
Artem Pelenitsyn
Referencje pochodzą z Twittera po tym, jak tam link do pytania CS.SE beta pojawił się tam. Podziękowania dla Milesa Sabina (@milessabin na Twitterze) i Alexeya Romanova.
Artem Pelenitsyn
Zobacz bezkształtną bibliotekę Mil Sabins i jego motywację za te lib. Myślę, że odwołuje się do niektórych dokumentów
AndreasScheinert

Odpowiedzi:

7

Jak wspomniano w jednym z komentarzy PO, jest to tabela, która wyjaśnia, jak Scala wypada pod względem obsługi ogólnego programowania. Link do źródła pdf

stół z wymienioną Scalą

Później przedstawiono następujące podsumowanie:

Scala
Za pomocą wzoru CONCEPT możemy modelować koncepcje wielu typów, wiele ograniczeń i wspierać modelowanie retroaktywne. Ponadto wsparcie Scala dla implicitów oznacza, że ​​wady rozwiązań Java i C # pod względem dodatkowego obciążenia nie dotyczą Scali. Dlatego Scala osiąga dobre wyniki zarówno w domyślnej dedukcji argumentów, jak i w retroaktywnych kryteriach modelowania. Sekcja 6 pokazuje, że powiązane typy są obsługiwane w Scali za pośrednictwem elementów typu i zależnych typów metod, a elementy typu mogą być również używane jako aliasy typów.
Jak pokazano w części 3, Scala obsługuje modele o leksykalnym zasięgu. Ponadto kontrola typu jest w pełni modułowa. Implikacje nakładania się według priorytetów zapewniają pewne wsparcie dla przeciążenia opartego na koncepcji, co ilustruje zipWithNprzykład w sekcji 6.5. Jednak nakładające się modele muszą być uporządkowane przy użyciu hierarchii podtypów, co nie zawsze może być pożądane. Wynik tej funkcji jest zatem wystarczający. Wreszcie, Scala ma pełne wsparcie dla pierwszorzędnych funkcji, a także obsługuje ograniczenia równości.
Podsumowując, Scala okazuje się być językiem o doskonałym wsparciu dla ogólnych funkcji programowania, radzącym sobie z taryfą na tym samym poziomie, a nawet nieco lepszym, niż G (który został specjalnie zaprojektowany jako język dla ogólnego programowania w dużych) lub Haskell ( które zostało uznane, ma bardzo dobre wsparcie dla programowania ogólnego).

A następnie w podsumowaniu:

Składniki typów i zależne typy metod dodają dodatkową moc językowi, a połączenie dwóch mechanizmów pozwala na wyrażenie powiązanych typów. W połączeniu z implikacjami, członkowie typów i zależne typy metod sprawiają, że Scala jest językiem gotowym do ogólnego programowania w dużych

Społeczność
źródło