Gibt es eine Ausdruckshierarchie für Typsysteme?

23

Inspiriert von den umfangreichen Hierarchien in der Komplexitätstheorie, habe ich mich gefragt, ob solche Hierarchien auch für Typsysteme vorhanden sind. Die beiden Beispiele, die ich bisher gefunden habe, ähneln jedoch eher Checklisten (mit orthogonalen Merkmalen) als Hierarchien (mit immer aussagekräftigeren Schriftsystemen).

Die beiden Beispiele, die ich gefunden habe, sind der Lambda-Würfel und das Konzept des k-Rang-Polymorphismus . Die erste ist eine Checkliste mit drei Optionen, die zweite ist eine echte Hierarchie (obwohl der Rang k für bestimmte Werte von k meiner Meinung nach ungewöhnlich ist). Alle anderen mir bekannten Systemmerkmale sind meist orthogonal.

Ich interessiere mich für diese Konzepte, weil ich meine eigene Sprache entwerfe und sehr gespannt bin, wie sie zu den derzeit existierenden Typensystemen zählt (mein Typensystem ist meines Wissens nach etwas unkonventionell).

Mir ist klar, dass das Konzept der „Ausdruckskraft“ etwas vage sein kann, was möglicherweise erklärt, warum Typensysteme für mich wie Checklisten erscheinen.

Alex ten Brink
quelle
4
Ich bin sicher, dass nur zwischen den theoretischeren Typsystemen schnelle und genaue Vergleiche möglich sind. Wenn Sie eine vollständige Programmiersprache entwerfen, können Sie einen merkmalsweisen Vergleich mit vorhandenen Sprachen / Formalismen durchführen. Leider ist dies keine triviale Aufgabe, da viele Features in Bezug auf andere Features codiert werden können. Wenn Sie Typen haben können, die so schick sind wie die von Scala oder Haskell, dann werden Sie in Bezug auf Ausdruckskraft gute Ergebnisse erzielen.
Dave Clarke
3
Ich sollte meinen Blog-Beitrag über "Wie man Programmiersprachen vergleicht" wirklich beenden ...
Andrej Bauer
@Andrej Bauer: Das wäre eine interessante Ergänzung zu den hier bereits vorhandenen Antworten und Bemerkungen. Ich habe bereits einiges darüber gelernt, wie „Ausdruckskraft“ definiert werden könnte - vielleicht hätte ich das stattdessen fragen sollen ...
Alex ten Brink
Ich bin sicher, ich habe an einigen Stellen Polymorphismus vom Rang 2 gesehen. Eines, an das ich mich gerade erinnere, ist Lammel, Peyton-Jones, Scrap Your Boilerplate, 2003.
Radu GRIGore
2
@Radu GRIGore: Rang-2-Polymorphismus ist bedeutsam, weil er zulässt, dass Typargumente in einer doppelt kontravarianten Position erscheinen, was durch die übliche Art der Dualität die Modellierung existenzieller Typen durch ihre Kodierung in der Kirche ermöglicht. Rang 3 gibt nur wieder eine universelle Quantifizierung und wechselt von dort ab, so dass im Vergleich wenig Aussagekraft hinzugefügt wird.
CA McCann

Antworten:

22

Es gibt mehrere Sinne von "Ausdruckskraft", die Sie für ein Typensystem wünschen könnten.

  1. F

  2. EINBFF

  3. EINB

  4. Garantiert ein Typensystem stärkere Eigenschaften als ein anderes? Beispielsweise lehnen lineare Systeme nur mehr Programme ab, was es ihnen jedoch ermöglicht, genauere Aussagen über die Programme zu treffen, die sie akzeptieren.

Leider glaube ich nicht, dass an der Kategorisierung oder Formalisierung dieser Begriffe gearbeitet wurde, mit Ausnahme des Lambda-Würfels von Barendregt, wie @cody erläutert.

Sam Tobin-Hochstadt
quelle
3
Ich denke, mit "Felleisens Expressivitätspapier" meinen Sie seine " Über die Ausdruckskraft von Programmiersprachen" .
Martin Berger
Ja genau. Ich habe diesen Teil der Antwort geklärt.
Sam Tobin-Hochstadt
13

Ich bin mir nicht sicher, ob ich eine zufriedenstellende Antwort auf Ihre Frage habe, aber wenn Sie Pure Type Systems in Betracht ziehen, eine Verallgemeinerung der Systeme, die im Lambda-Würfel enthalten sind (eine gründliche, wenn auch etwas veraltete Übersicht finden Sie im klassischen Barendregt-Text) ) Dann gibt es ein paar natürliche Vorstellungen von Hierarchien:

  1. ΓEIN t:TΓB t:TΓ,tT:(,,)PTS in dem Sinne, dass es einen Morphismus von jedem anderen PTS gibt. Dies kann als Maß für die Ausdruckskraft eines Typensystems angesehen werden, bei dem das endgültige PTS das aussagekräftigste System ist.

  2. EINBEINFωECC

Cody
quelle