我最近开始学习Prolog
并遇到了一个问题。
以下内容已加载到Prolog
:
likes(john, apple).
likes(john, pear).
likes(john, grapes).
likes(bill, mango).
likes(bill, apple).
我正在写一个谓词,如果所有的人都喜欢 in 的水果,all_like(What, List)
它应该返回。True
List
What
例如:
all_like(apple,[john, bill]).
应该返回:
true ;
false.
all_like(grapes,[john, bill]).
应该返回:
false.
我有以下代码:
all_like(What,List) :- check_list(What,List).
check_list(What,[]) :- write('true').
check_list(What, [X|Rest]) :- likes(X,What), check_list(What,Rest).
check_list(What, [X|Rest]) :- \+ likes(X,What), write('false').
我的结果是:
第一个查询
true
true .
第二次查询
false
true .
有人知道我为什么会得到这些结果吗?
输出第二个布尔值有什么意义?
最后,.
出现在一个空间之后有意义吗?
感谢您的帮助。