Etwas sehr Ähnliches, aber die Verwendung von Light Affine Logic (LAL) anstelle von EAL, wurde vor einigen Jahren von Baillot, Gaboardi und Mogbil versucht (das Papier finden Sie hier ). Ich denke, ihre Arbeit lässt sich leicht auf EAL übertragen, ein liberaleres System.
Was die Merkmale einer solchen Sprache betrifft, so haben Sie nativ Polymorphismus (EAL ist eine Einschränkung der linearen Logik zweiter Ordnung). Soweit ich weiß, hat sich niemand mit abhängigen Typen befasst, aber ich verstehe nicht, warum sie nicht funktionieren sollten. Tatsächlich funktioniert untypisierte EAL genauso gut wie typisierte EAL, da ihre Normalisierungseigenschaften nicht von Typen abhängen.
Eine Konsequenz ist, dass Sie in EAL beliebige Fixpunkte von Typen verwenden können (siehe zum Beispiel dieses andere Papier von Baillot) und Datentypen im natürlichen rekursiven Stil definieren können (wie ) zusammen mit der weniger natürlichen (aus Programmiersicht) System-F-Definition. Durch die obige Bemerkung zur untypisierten Normalisierung wird eine auf EAL basierende Programmiersprache jedoch immer vollständig seinl i s t A : = n i l | EIN ∗ l i s t EINDies bedeutet, dass Sie keinen Fixpunktkombinator haben und die Verwendung rekursiver Typen nicht so natürlich ist, wie Sie es erwarten würden. Nehmen wir zum Beispiel Scott-Ziffern: Ohne rekursive Definitionen (vom Fixpunktkombinator angegeben) ist es schwierig, mit dieser Darstellung von ganzen Zahlen etwas auszudrücken, das über zeitkonstante Operationen hinausgeht. Daher müssen Sie weiterhin Church-Ziffern für die Iteration verwenden (dh ), mit deren Hilfe Sie die grundlegende Schichtungsbeschränkung der (die ihnen ihre Komplexitätseigenschaften verleiht): Sie können a nicht iterieren Funktion die selbst durch Iteration definiert wurde ( hier die Art der Ganzzahlen der Kirche).f o rN a t → N a tN a t
Ein Beispiel: Mit einigen "Church Integer Hacking" ist es möglich, in EAL so zu definieren, dass ohne Iteration. Anschließend können Sie iterieren , um die Exponentialfunktion zu definieren , die jedoch selbst nicht iteriert werden kann. Unabhängig davon, welche Programmiersprache auf EAL basiert, muss ein Mechanismus vorhanden sein, der bestimmte Definitionen durch Iteration verbietet. Es ist schwer vorstellbar, dass eine solche Einschränkung nicht zu einer Sprache führen würde, die sich für den Programmierer unangenehm anfühlt. Wie auch immer, niemand verbietet dir zu versuchen, zu sehen, was du bekommen kannst!d b l : N a t → N a td b l n - -- -= 2 n- -- -- - d b le x p
Wenn Sie an der Beziehung zwischen optimaler Bewertung, EAL und Lichtlogik im Allgemeinen interessiert sind, empfehlen wir Ihnen auf jeden Fall, sich Coppolas Arbeiten von Anfang bis Mitte der 2000er Jahre anzusehen .