为什么Prolog会等

时间:2015-11-17 20:20:38

标签: prolog

所以我正在为我的大学@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以上)我必须按回车。

1 个答案:

答案 0 :(得分:4)

以下内容与您的代码无关,而是与Prolog代码有关。

您观察到的现象背后的根本原因是:Prolog目标可以不止一次成功,但最多只能失败一次。