Scala als Sprache für die generische Programmierung

13

In der Arbeit „Eine erweiterte vergleichende Studie zur Sprachunterstützung für generisches Programmieren“ von Garcia et al. Ein interessanter Vergleich der Programmiersprachenfunktionen für die generische Programmierung wird gegeben:

Bildbeschreibung hier eingeben

mit der kurzen Erklärung der Terminologie:

Bildbeschreibung hier eingeben

Kann jemand die Scala-Unterstützung für die generische Programmierung in diesem Framework testen? Dh fügen Sie eine Spalte in der ersten Tabelle mit Erklärungen hinzu, wenn möglich.

Artem Pelenitsyn
quelle
3
Auf Informatik umgeschrieben . Bitte tu das nicht. Wenn Sie Ihre Frage auf eine andere Website verschieben möchten, die Ihrer Meinung nach besser geeignet ist, melden Sie sich als Moderator und fordern Sie eine Migration an.
Gilles 'SO- hör auf böse zu sein'
2
Die genaue Antwort finden Sie auf S. 17 von „ Typklassen als Objekte und Implikite “ von Oliveira et al.
Artem Pelenitsyn
Der Verweis stammt von Twitter, nachdem dort der Link zur CS.SE-Beta-Frage rieselte. Vielen Dank an Miles Sabin (@milessabin auf Twitter) und Alexey Romanov.
Artem Pelenitsyn
Werfen Sie einen Blick auf Meilen Sabins formlose Bibliothek und seine Motivation hinter te lib. Ich denke, Referenzen einige Papiere
AndreasScheinert

Antworten:

7

Wie in einem Kommentar des OP erwähnt, ist dies die Tabelle, die erklärt, wie Scala die generische Programmierunterstützung vergleicht. Link zur Quelle pdf

Tabelle mit Scala aufgeführt

Später wird die folgende Zusammenfassung bereitgestellt:

Scala
Mit Hilfe des CONCEPT-Musters können wir Mehrtypkonzepte und mehrere Einschränkungen modellieren und die rückwirkende Modellierung unterstützen. Darüber hinaus bedeutet die Unterstützung von Scala für Implicits, dass die Nachteile der Java- und C # -Lösungen hinsichtlich des zusätzlichen Overheads nicht für Scala gelten. Somit schneidet Scala sowohl beim impliziten Argumentabzug als auch bei den rückwirkenden Modellierungskriterien gut ab. Abschnitt 6 zeigt, dass zugeordnete Typen in Scala durch Typmember und abhängige Methodentypen unterstützt werden. Typmember können auch als Typaliase verwendet werden.
Wie in Abschnitt 3 gezeigt, unterstützt Scala Modelle mit lexikalischem Gültigkeitsbereich. Darüber hinaus ist die Typprüfung vollständig modular. Priorisierte überlappende Implizite bieten Unterstützung für konzeptbasiertes Überladen, wie in zipWithN dargestelltBeispiel in Abschnitt 6.5. Überlappende Modelle müssen jedoch unter Verwendung einer Subtypisierungshierarchie strukturiert werden, was möglicherweise nicht immer wünschenswert ist. Somit ist die Punktzahl für dieses Merkmal nur ausreichend. Schließlich bietet Scala volle Unterstützung für erstklassige Funktionen und unterstützt auch Gleichheitsbeschränkungen.
Zusammenfassend stellt sich heraus, dass Scala eine Sprache mit hervorragender Unterstützung für generische Programmierfunktionen ist, die es schafft, auf dem gleichen oder sogar etwas besseren Niveau als G (das speziell für generische Programmiersprachen entwickelt wurde) oder Haskell ( (was erkannt wurde, hat eine sehr gute Unterstützung für die generische Programmierung).

Und dann in der Zusammenfassung:

Typmember und abhängige Methodentypen verleihen der Sprache zusätzliche Kraft, und eine Kombination der beiden Mechanismen ermöglicht es, zugeordnete Typen auszudrücken. In Kombination mit Impliziten machen Typmember und abhängige Methodentypen Scala zu einer Sprache, die für die generische Programmierung im großen Stil bereit ist

Gemeinschaft
quelle