Ist es möglich, abhängige Typen in typisierten Schlägern zu erstellen?


9

Ist es möglich, abhängige Typen in der vorhandenen Typed Racket- Implementierung zu verwenden? (dh existieren sie darin?)

Ist es vernünftigerweise möglich, ein System abhängiger Typen mit typisiertem Schläger zu implementieren?


3
Ich denke, Sie müssen diese Frage ein wenig klären: Fragen Sie sich, ob abhängige Typen in Racket existieren oder ob es möglich ist, sie hinzuzufügen ? Wenn es das erstere ist, dann nein (nach den vernünftigsten Definitionen abhängiger Typen), und wenn es das letztere ist, dann ja.
Cody

1
Wie Cody bemerkt, ist diese Frage unklar, und je nachdem, was Sie gemeint haben, ist die Antwort entweder ein nicht sehr interessantes Nein oder ein nicht sehr interessantes Ja. Bitte konkretisieren Sie diese Frage, damit wir wissen, was Sie tatsächlich fragen.
Gilles 'SO - hör auf böse zu sein'

Antworten:



-1

Ich denke, "abhängige Typen" mit Verträgen zu machen ist bereits möglich. Überprüfen Sie https://docs.racket-lang.org/guide/contracts-struct.html und suchen Sie nach "Überprüfen der Eigenschaften von Datenstrukturen".

Man könnte argumentieren, dass dies eher den Effekt simuliert, als ihn als Teil der Sprache zu haben. Irgendwo müssen Sie jedoch den Code schreiben, der dem Interpreter / Compiler mitteilt, was diese Abhängigkeiten sind, und in Racket können Sie dies mit Verträgen tun.


Ich bin zufrieden mit der Idee, dass Makros in Racket den Compiler erweitern
Hawkeye

@hawkeye Können Sie eine Antwort auf diese Frage geben, die abhängige Typen mit Makros implementiert? (Ich bezweifle nicht, dass es möglich ist.)
Zelphir Kaltstahl

Das Argument, ob Makros den Compiler erweitern, ist hier: stackoverflow.com/a/268091/15441 und Sie können jeden Code in ein Makro einfügen - so kann der Code, der für abhängige Typen verwendet wird, in ein Makro eingefügt werden. Das war der Punkt, den ich machte.
Hawkeye
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.