所以我正在为我的大学@prolog做一份工作,我正试图找到以下做法的答案:找出它们是否是两个列表之间的共同元素。
我写道:
inlist(X,[X|_]).
inlist(X,[H|L]) :-
inlist(X,L).
isOneInterest([X],[X|_]).
isOneInterest([X|L1],L) :-
( inlist(X,L)
; isOneInterest(L1,L)
).
现在我知道有更好的解决方案,我很乐意看到它们,但我的问题是:为什么Prolog在回答true
后会等待?在回答false
时,它不会等待。
示例:
11 ?- isOneInterest([a,b],[a,d]).
true.
.
12 ?- isOneInterest([a,b],[s,d]).
false.
你可以看到点(12以上)我必须按回车。
答案 0 :(得分:4)
以下内容与您的代码无关,而是与Prolog代码有关。
您观察到的现象背后的根本原因是:Prolog目标可以不止一次成功,但最多只能失败一次。