与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).
我希望,有人可以帮助我,如何定义规则。
答案 0 :(得分:0)
您可以定义规则:
should(X, go_to(X, floor)) :- empty_bladder(X),currentlocation(X, toilet).
以上说:if子句empty_bladder(X)存在,而currentlocation(X,厕所)则返回第二个参数go_to(X,floor)。