2 Stimmen

Typprüfungsbibliotheken

Ich arbeite an einem Compiler und bin auf der Suche nach einer Bibliothek, die eine Typüberprüfung für mich durchführen kann. Bis jetzt habe ich nichts nützliches gefunden=/ Kennt jemand gute Bibliotheken zur Typüberprüfung? Ich benutze Haskell, aber ich würde jede andere Sprache in Betracht ziehen, wenn die Bibliothek gut ist=)

3voto

stephen tetley Punkte 4445

Es könnte Bibliotheken geben, die bei Teilen der Typprüfung helfen, besonders wenn Sie wirklich eine Typprüfung und keine Typinferenz wollen. Es gibt zum Beispiel Bibliotheken, die Logikprogrammierung in Haskell einbetten - aus 10.000 Fuß Höhe scheint es ein gutes Stück einfacher zu sein, einen Typprüfer mit Logikprogrammierung zu schreiben als mit funktionaler Programmierung (zum Beispiel Chameleon, erwähnt von shapr oben basiert auf der in Haskell eingebetteten Sprache CHR).

Abgesehen davon ist die Programmierung von eingebetteter Logik in Haskell ein großer Schritt mit wahrscheinlich wenig Dokumentation, wenn man noch nie einen Typprüfer geschrieben hat. In ähnlicher Weise sind Attributgrammatiken (z.B. UUAG) ein angenehmer Formalismus, der einen großen Teil der Maschinerie liefert, die Sie selbst schreiben müssten, aber sie könnten Sie an einen Ort mit wenigen Wegweisern bringen, wenn Sie noch nie eine benutzt haben.

Wenn Sie noch nie einen Type Checker geschrieben haben, ist es vielleicht besser, sich keine Gedanken über Bibliotheken zu machen und den Prozess von Grund auf neu durchzuarbeiten. Das Papier "Typing Haskell in Haskell" von Mark P. Jones ist wahrscheinlich ein guter Startpunkt.

1voto

shapr Punkte 1637

Vielleicht ist Martin Sulzmann's Chamäleon hilfreich sein würde?

0voto

John L Punkte 27757

Ich habe auf Hackage mehrere Typenprüfprogramme gefunden, darunter dedukti , hybrid et lambdacube Vielleicht würde eine von diesen funktionieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X