Prolog中的变量规则

时间:2017-03-22 17:48:15

标签: prolog

How to define simple rule in prolog中的答案一样,我定义了以下程序:

should(X, go_to(X, toilet)) :- full_bladder(X).

?- assert(full_bladder(bob)).
true.
?- should(bob, Action).
Action = go_to(bob, toilet)

我现在补充一下事实:

?- assert(lastlocation(bob, floor)).
true.
?- assert(currentlocation(bob, toilet)).
true.
?- assert(empty_bladder(bob)).
true.

我现在如何定义以下规则:

"当currentlocation是厕所和empty_bladder然后去lastlocation"

此规则应确保针对以下问题

?- should(bob, Action).

结果应该是

Action = go_to(bob, floor).

我希望,有人可以帮助我,如何定义规则。

1 个答案:

答案 0 :(得分:0)

您可以定义规则:

should(X, go_to(X, floor)) :- empty_bladder(X),currentlocation(X, toilet).

以上说:if子句empty_bladder(X)存在,而currentlocation(X,厕所)则返回第二个参数go_to(X,floor)。