Anfängerfrage in Prolog.

IKäsebrot

Ensign
Registriert
Juni 2014
Beiträge
245
Hi liebes Forum,

habe nur eine kurze Frage. Folgender Code liefert true:

Code:
bahnhof(zürich).
bahnhof(bern).
verbunden(X,Y) :- bahnhof(X),bahnhof(Y).
?- verbunden(zürich,bern).

Jetzt möchte ich eine Abfrage erstellen die false ausgibt:

Code:
bahnhof(zürich).
bahnhof(bern).
verbunden(X,Y) :- bahnhof(X),bahnhof(Y).
?- verbunden(zürich,basel).

Da bekomme ich aber folgenden Fehler:

Goal (directive) failed: user:verbunden(zürich,basel)

Woran könnte das liegen? Bin neu in Prolog, müsste ich basel deklarieren? Oder liegt der Fehler irgendwo anders?

Gruß
 
Es ist schon eine Weile her, dass ich Prolog gelernt habe, aber ich glaube nicht, dass der von dir gepostete Code das Problem ist. In SWISH z.B. liefert er tatsächlich "false" wie gewünscht. Genaueres kann ich dir von hier aus aber auch nicht sagen.
 
Woran könnte das liegen? Bin neu in Prolog, müsste ich basel deklarieren? Oder liegt der Fehler irgendwo anders?
Eigentlich nicht, denn etwas, was nicht "deklariert" ist, hat einfach nur keine Eigenschaften. In SWI-Prolog funktioniert dein Code auch - aber probiere mal, ob es geht, wenn du einfach mal testweise
Code:
kein_bahnhof(basel).
irgendwo hin schreibst.

Edit: Kann es sein, dass du die Abfrage selbst ins Programm geschrieben hast? Denn dann wirft er mir hier auch die Fehlermeldung, offenbar sind Abfragen nur im interaktiven Modus erlaubt. Genaueres weiß ich jetzt allerdings auch nicht.
 
Zuletzt bearbeitet:
@VikingGe:

Du hast absolut Recht. Ich habe die Abfrage direkt in das Programm geschrieben :D

Jetzt bin ich auch klüger, vielen Dank.

Vielleicht hier noch eine Frage, wie aktiviere ich den interaktiven Modus?
 
Zuletzt bearbeitet:
Zurück
Oben