我正在学习使用 SWI Prolog,我正在学习使用列表。一个小练习是检查一个元素是否在列表中。这是我得到的:
member(X,[X|_]).
member(X,[_|T]):-member[X|T].
Run Code Online (Sandbox Code Playgroud)
第一种情况按预期进行:
?- member(a,[b,a]).
true.
Run Code Online (Sandbox Code Playgroud)
但第二个没有,因为似乎出现了一些回溯:
?- member(a,[a,b]).
true ;
false.
Run Code Online (Sandbox Code Playgroud)
我怎样才能防止这种情况发生,即让 Prolog 只返回true?(我不想忽略 false。)