Frage

in Visual Prolog gibt es „Domänen“ in einem Prolog-Programm, in dem Sie Typen definieren können. Gibt es eine ähnliche Sache in swi-prolog?

In Visual Prolog eine Art definiert wie:

domains
NewType = thing1; thing2
War es hilfreich?

Lösung

Nein. Aber es gibt Erklärung Modus in Mercury . Quecksilber ist mehr als Prolog; es ist eine Funktionslogik Sprache. Mercury hat noch eine Menge von Prolog-Syntax.

SWI-Prolog ist ein Standard-Prolog. Es verwendet nur Modus Erklärungen in der Dokumentation 1 als Information für die Benutzer. Diese Erklärungen können in den Kommentaren von Modulen für die Dokumentation-Parsing-Programme platziert werden, um zu kompilieren.

In dem Standard Prolog, außerhalb von Kommentaren sind solche Erklärungen nur erlaubt (und reqired) in ganz besonderen Situationen. Der Block / 1 Prädikat SICStus Prolog zum Beispiel verlangt, dass sie.

Block / 1 für die Co-Routing verwendet wird (lazy evaluation, Verzögerung etc.). Ich habe nur block in einem Programm in meinem Leben gesehen verwendet, PAKCS 2 , ein Interpreter für eine weitere Funktionslogik Sprache. Wenn der Dolmetscher SWI portiert wurde, wurde block/1 nicht verwendet.

1 Typ und Modus Erklärungen in SWI Quelle Dokumentation
2 PAKCS, ein Programm, das unter Verwendung von block/1 Prädikat (PAKCS ist eine Implementierung der Curry Sprache).

Andere Tipps

Während SWI-Prolog nicht Typen in einer Kapazität ganz wie unterstützen, was Sie fordern, ist es erwähnenswert, dass es in der Tat einen einfachen ‚Typen‘ Mechanismus, durch den Einsatz von Begriff Spezifikation über die record / 1 Prädikat in der record Bibliothek.

Dieses Prädikat ermöglicht es Ihnen, einen einigermaßen komplexen Begriff angeben ‚Typen‘ (Muster) mit einer bestimmten Begriff Spezifikationssprache, und interpretiert sie automatisch Prädikate zum Generieren Erstellung auszuführen (über ein Konstruktor Prädikat), Änderung über ‚Setter‘ Prädikate und Accessoren über ‚Getter‘ Prädikate auf Begriff Instanzen, die alle im Weg der Begriff-Erweiterung mit einer bestimmten Prädikat Namenskonvention.

Dies ist besonders nützlich beim Schreiben von Prolog-Code, um einigermaßen komplexe Begriff Strukturen geht, wie es Ihnen mit einer rudimentären Fähigkeit Typprüfung vorsieht, die typischerweise Prolog fehlt (nativ). Ich habe dies auf viele eine groß angelegte Projekt Prolog verwendet, wo Schnittstellen vor der Implementierung ausgelegt sind.

Ich erinnerte mich über Typen für Swi & Yap Prolog zu lesen. Hier ist eine Website mit einem "Hindley-Milner Type Checker für Prolog:"

Typen für Prolog - Mercury-Stil Typdeklarationen und Prädikat Signaturen

Prolog Typ Checker Bibliothek

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top