我定义了一个递归规则,但结果似乎不正确。
customer(peter,bank(maybank),customertype(personal),
citizen(malaysian),age(62),credit(50000),
income(3000),property(car) ).
isseniorcitizen(X) :- customer(X, bank(_),customertype(_),
citizen(malaysian),age(Age),credit(_),
income(_),property(_)),
Age >= 60.
lowerinterest(Senior) :- isseniorcitizen(Senior).
isseniorcitizen(peter).
但SWI-Prolog回归 X =彼得; X =彼得。
为什么它返回两次而不是一次?
请帮忙。
感谢。
答案 0 :(得分:2)
一个简单的问题是,你已经说过,彼得是两次老年人;首先通过将程序中的“数据库”添加到程序中的第一顺序逻辑,然后简单地说明他是程序底部的老年人。我之前的回答(添加一个切口)也是正确的,但错过了问题;在发现peter成为匹配原子后,它会取消对统一变量X的搜索,因此不会进入其他X-es而不是peter。