Auf den Computern im Berlin-Pool (Raum III.2.12, Rechnernamen mitte, kudamm usw.) ist SWI-Prolog in der Version 5.10.2 installiert. Um SWI-Prolog zu starten, loggen Sie sich in einen der Rechner ein, starten eine Befehlskonsole und geben
swiplein. Daraufhin sollte folgende Eingabeaufforderung erscheinen:
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,856 bytes Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.10.2) Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?-Ausgaben des Prolog-Interpreters sind hier blau dargestellt.
Jetzt können Sie Anfragen an das Prolog-System stellen. Anfragen enden mit einem Punkt ".", dadurch lassen sich auch Anfragen über mehrere Zeilen verteilen:
?- X is 2 + 4, | Z is X - 10. X = 6, Z = -4.
Um ein Programm in den Prolog-Interpreter zu laden, benutzen Sie die Anfrage
?- [datei].
beziehungsweise
?- consult(datei).
SWI-Prolog versucht daraufhin, die Datei "datei.pl" aus dem
aktuellen Verzeichnis zu laden. Falls diese nicht existiert,
wird nach "datei" gesucht. Beachten Sie, dass beide Anfragen mit dem Fehler
ERROR: load_files/2: Arguments are not sufficiently instantiatedscheitern, wenn der Ausdruck "datei" nach den Syntaxregeln von Prolog eine Variable repräsentiert, d.h. beispielsweise, wenn "datei" mit einem Großbuchstaben beginnt. Sie können einen beliebigen Dateinamen angeben, wenn Sie ihn in Apostrophen einschließen:
?- consult('Diese Datei heißt anders').
Das aktuelle Verzeichnis können Sie sich mit
?- pwd.
anzeigen lassen. Mit
?- cd('Unterverzeichnis').
können Sie in ein
anderes Verzeichnis wechseln.
SWI-Prolog enthält eine abgespeckte Variante des Text-Editors emacs. Diese lässt sich mit
?- emacs.
aufrufen. Insbesondere verfügt dieser emacs über farbige
Syntax-Hervorhebung und automatische Einrückung, außerdem können Sie
im Menü "Compile/Compile Buffer" das aktuelle Programm in den
Interpreter laden.
Bitte beachten Sie, dass der Text-Editor nur gestartet werden kann, wenn Sie SWI-Prolog aus der graphischen Oberfläche eines der Rechner mitte, kudamm usw. heraus ausführen.
SWI-Prolog enthält ausführliche Hilfsfunktionen. Mit
?- help.
können Sie einen Hilfe-Browser starten und
?- help(thema).
Hilfe zu einem bestimmten Thema, beispielsweise einem Prädikat, anfordern. Die Anfrage
?- apropos(ausdruck).
durchsucht die Hilfeseiten nach Themen, deren Bezeichnung den Ausdruck ausdruck enthalten. Beispielsweise öffnet die Eingabe der Anfrage
?- help(apropos).
ein Hilfefenster mit dem folgenden Text:
apropos(+Pattern)
Display all predicates, functions and sections that have Pattern in
their name or summary description. Lowercase letters in Pattern
also match a corresponding uppercase letter. Example:
?- apropos(file). Display predicates, functions and sec-
tions that have `file' (or `File', etc.)
in their summary description.
Bitte beachten Sie, dass die Hilfe-Funktionen nur gestartet werden kann, wenn Sie SWI-Prolog aus der graphischen Oberfläche eines der Rechner mitte, kudamm usw. heraus ausführen.
Durch einmaligem Drücken von Strg+D (in einer leeren Eingabezeile) wird SWI-Prolog sofort und ohne weitere Nachfragen beendet. Hierfür kann ebenso die Anfrage
?- halt.
verwendet werden.
Der aktuelle Inhalt der Datenbank von Prolog kann mit der Anfrage
?- listing.
angezeigt werden.
Mit der Anfrage
?- consult(user).
oder
?- [user].
können Sie
direkt in die Datenbank von Prolog eingeben:
?- [user]. |: gerade([]). |: gerade([_, _ | Rest]):- |: gerade(Rest). |: % user://1 compiled 0,00 sec, 512 bytes true.Mit zweimaligem Drücken von Strg+D kommen Sie wieder in den normalen Modus zurück.
Die Anfrage
?- make.
prüft für alle geladenen Dateien, ob sie auf der
Festplatte verändert wurden, und lädt sie gegebenenfalls neu.
Die Anfrage
?- trace(name).
führt dazu, dass künftige Aufrufen von name angezeigt werden. Beispiel:
?- trace(gerade). % gerade/1: [call,redo,exit,fail] true. [debug] ?- gerade([a,b,c]). T Call: (6) gerade([a, b, c]) T Call: (7) gerade([c]) T Fail: (7) gerade([c]) T Fail: (6) gerade([a, b, c]) false.Damit wird automatisch der Debug-Modus aktiviert. Die Eingabeaufforderung lautet deshalb
[debug] ?-
Der Debug-Modus kann mit der Anfrage
[debug] ?-nodebug.
verlassen werden.