我有persons
和parent
事实
person(nameA).
person(nameB).
person(nameC).
parent(parentname, children).
我需要编写一条规则hasnochild(X).
来遍历所有没有孩子的person
。
这是我到目前为止所写的内容。
hasnochild(X) :- parent(Z, X).
但它会返回所有有孩子的人的姓名。如何让那些没有孩子的人接受?
类似于person
的整个列表,取消了我所写的内容。
答案 0 :(得分:0)
你必须尝试将人(你的问题中的X
)与数据库中的人统一起来,然后只有在那个人没有孩子的情况下才能成功。
E.g:
hasnochild(X):-
person(X), % X is a Person
\+ parent(X, _). % with no children
如果您知道person(X)
的第一个参数是一个人,则可以避免对parent/2
的调用。