Dit is een mini-introductie in SWI-Prolog, bedoeld om je op weg te helpen
in het gebruik ervan in een Unix/Linux-omgeving.
Met het commando
prologstart je de interpreter. Na enige informatie over de versie en de licensie van de interpreter volgt de prompt
| ?-Voor we verder gaan: je beeindigt een Prolog-sessie met het commando
halt.(inclusief punt!), gevolgd door [Enter].
Om Prolog aan het werk te zetten dien je een of meer bestanden met Prolog-statements in te voeren. Het is gebruikelijk (maar niet noodzakelijk) om bestanden met Prolog-programma's het achtervoegsel .pl te geven. Om de bestanden file1.pl,...,filen.pl in te lezen, geven we het commando
[file1, ..., filen].Vergeet de punt aan het einde niet, die sluit elke opdracht af. Als een bestandsnaam speciale tekens bevat (punt, schuine streep, enz.), zet 'm dan tussen enkele quotes ('). De rechte haken zijn overigens een afkorting voor het commando consult.
Vervolgens reageert de interpreter met enige informatie over het interpreteren van de bestanden, oa. met foutmeldingen en waarschuwingen. Zijn er geen foutmeldingen, dan volgt
yes | ?-Nu kun je vragen stellen, dwz. queries intypen. Ook die moeten met een punt worden afgesloten, niet met een vraagteken (raar maar waar). Na [Enter] gaat de interpreter aan het werk om de vraag te beantwoorden. Bevat de vraag geen variabelen, bv.
brother(gerard,erik).dan is het antwoord
yesof
noBevat de vraag een of meer variabelen, bv.
brother(gerard,X).dan is het antwoord
noals er geen instantie van de variabele(n) te vinden is waarvoor het antwoord positief is. Is zo'n instantie er wel, dan is dat ook het antwoord, gevolgd door een vraagteken, bv.
X = erik ?Typ je nu
;dan volgt een volgende positieve instantie (als die er is), bv.
X = victor ?anders het antwoord
noTyp je [Enter] ipv. de puntkomma, dan volgt alleen het antwoord
yes
Programmeren mbv. Prolog gaat het best via bestanden met Prolog-statements. Vergeet niet om, na wijziging van een programmabestand, het bestand te bewaren en opnieuw in te lezen mbv. [ ... ]. of consult( ... ).