Prolog (programmeringsspråk)

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

Prolog, ett programspråk för logikprogrammering. Prolog skiljer sig från de flesta andra programspråk i och med att det bygger på logiska uttryck och inte på instruktioner för datorn. Prolog används främst inom områdena artificiell intelligens och språkbehandling.

Att programmera i Prolog liknar inte riktigt program skrivna i programspråk som t.ex C, språket är uppbyggt så att man i sitt program definierar klausuler som returnerar sant eller falskt. Man ställer sedan frågor till systemet som med hjälp av de klausuler man definierat kan dra slutsatser och svara på frågor.

Datatyper

Prolog har inte några typer, den data som används är antingen obundna variabler, atomer med något värde, variabler bundna till atomer eller listor av de tidigare nämnda.

En lista används lätt som en stack då listans definition är ett huvud och en svans, det finns även ett specialfall av listor kallade differenslistor i vilka man även kan lagra obundna variabler och på så sätt få direkt åtkomst även till listans bakre element (om man t.ex vill implementera en där element skall läggas till slutet av listan).

Exempel

Nedan följer ett exempel på prologkod som definierar och visar följande:

  • Frukter är ätbara,
  • päron är en frukt.
  • Således är päron ätbara.
ätbar(X) :- frukt(X).  % man kan äta frukt.
frukt(päron).          % päron är en frukt.

Man kan därefter fråga prolog följande:

?- ätbar(päron).     % kan man äta päron?
yes

Baserat på vad man definierat kan Prolog dra slutsatsen att päron går att äta. Men skulle vi i samma program fråga om man kan äta äpplen skulle man få svaret att det inte går, eftersom vi inte har definierat detta i världen.

?- ätbar(äpplen).     % kan man äta äpplen?
no

Prolog kan även ge lösningar till ens frågor. I exemplet kan vi fråga efter vad kan man äta och vad som är frukt.

?- ätbar(X).     % vad är ätbart?

X = päron
?- frukt(X).     % vad är frukt?

X = päron

Skulle vi modifiera programmet så att vi även skulle inkludera äpplen i frukt (och där med även i ätbar) får vi ett svar som följande

?- frukt(X).     % vad är frukt?

X = päron ; n    % päron är frukt (vi trycker n för att få fler lösningar)

X = äpplen       % äpplen är frukt

Där n:et är den tangent vi trycker för att få fler svar. Detta kan dock variera av olika implementationer av Prolog, men alla bör ge svar som ovan. Skulle vi trycka y-tangenten skulle vi inte för äpplen som förslag.

Mer information

  • Patrick Blackburn, Johan Bos, Kristina Striegnitz: Learn Prolog Now![1] College Publications, 2006, ISBN 1-904987-17-6
  • Paul Brna, "Prolog programming - A first course"[2], fritt tillgänglig via WWW
  • Ivan Bratko, PROLOG - Programming for Artificial Intelligence, ISBN 0-201-40375-7
Personliga verktyg