私は最近学習Prolog
を始め、問題に遭遇しました。
以下が にロードされましたProlog
:
likes(john, apple).
likes(john, pear).
likes(john, grapes).
likes(bill, mango).
likes(bill, apple).
のすべての人がの果物のようになった場合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 .
2 番目のクエリ
false
true .
なぜ私がこれらの結果を得ているのか誰にも分かりますか?
出力される 2 番目のブール値の意味は何ですか?
最後に、.
重要なスペースの後に出現することはありますか?
ご協力ありがとうございました。