wenn X
ist durstig, X
sollte in die Bar gehen.
am ersten Teil dieses Satzes der Suche „, wenn X
durstig ist“, gibt es eindeutig eine Eigenschaft durstig, dass X
haben kann, so klingt thirsty
wie ein gutes Prädikat (thirsty(X)
bedeutet X
Durst).
Dann gibt es ein paar Möglichkeiten, um auf den zweiten Teil des Satzes zu schauen, "X
sollte in die Bar gehen", werde ich einige unten in der Reihenfolge der zunehmenden Komplexität mit dem letzten was ich denke, Sie wollen:
- einer ist, dass „in die Bar gehen sollte“ ist eine Eigenschaft von
X
, in welchem Fall man das Prädikat should_go_to_the_bar
als Prädikat definieren kann, so dass should_go_to_the_bar(X)
bedeutet X
in die Bar gehen sollte.
Dann kann Ihr Programm sein:
thirsty(bob).
should_go_to_the_bar(X) :- thirsty(X).
?- should_go_to_the_bar(bob).
True
- Ein weiterer Grund ist, dass „gehen sollte, um“ eine Beziehung zwischen
X
sein kann und the_bar
, so dass should_go_to(X, the_bar)
bedeutet, dass X the_bar gehen sollte.
Dann können Sie Ihr Programm sein:
thirsty(bob).
should_go_to_the_bar(X, the_bar) :- thirsty(X).
?- should_go_to(bob, X).
X = the_bar
- Ein weiterer Grund ist, dass "sollte" eine Eigenschaft von Aktionen wie
go_to(X, the_bar)
sein können, so dass should(go_to(the_bar))
, dass es bedeutet, sollte sei das go_to (X, the_bar).
Dann können Sie Ihr Programm sein:
thirsty(bob).
should(go_to(X, the_bar)) :- thirsty(X).
?- should(X).
X = should(go_to(bob, the_bar))
- Lese ich in gehen, ist, dass "sollte"
X
eine Beziehung zwischen einer Person sein kann, und eine Aktion sie können wie go_to(X, the_bar)
tun, so dass should(X, go_to(X, the_bar)
bedeutet, dass X (X, the_bar), dh X go_to sollte sollte es wahr machen, dass „X an die Bar geht“
Dann können sie Ihr Programm sein.
thirsty(bob).
should(X, go_to(X, the_bar)) :- thirsty(X).
?- should(bob, Action).
Action = go_to(bob, the_bar)
Ich denke, dass diese letzte Interpretation am nächsten ist, was Sie wollen.
Wenn ich dein letztes Programm versuche, bekomme ich immer eine Fehlermeldung: 'Undefined procedure: durstig/1' Kannst du mir helfen, das zu lösen? – BennoDual
@Bennodual Ja Entschuldigung, ich habe einen Fehler gemacht, da 'durstig (bob)' eine Tatsache ist, von der Sie annehmen, dass sie wahr ist, sollte es im Programm sein (und nicht die Abfrage, wie ich vorher geschrieben hatte). Jetzt funktioniert es wie beabsichtigt. Es ist im Programm erklärt, dass Bob durstig ist und die erklärte Beziehung zu dem, was er tun soll, und die Abfrage fragt dann, was Bob tun soll. –
- Vielen Dank für Ihre letzte Antwort. Es funktioniert jetzt auf diesem Weg. Noch eine kleine Frage: Kann ich das Programm (ohne 'durstig (bob)') mit consult() laden und nachträglich 'durstig (bob)' hinzufügen (und danach entfernen)? – BennoDual