所以我试着编写一段代码来检查项目是否在列表中。
is_member(_,[]).
is_member(X,[X|_]).
is_member(X,[_|tail]):- is_member(X,tail).
这是我目前所拥有的代码。如果项目处于第一个位置但没有检查列表的其余部分,则它可以工作。任何人都可以帮我弄清楚我做错了什么吗?谢谢。
答案 0 :(得分:2)
您的谓词面临以下两个问题:
对于空列表,基本案例is_member(_,[]).
将始终返回true,这是不正确的;以及
您的变量应以 U ppercase字符开头: Tail 。
如何实现解决这两个问题的谓词的示例:
is_member(X,[X|_]).
is_member(X,[_|Tail]):- is_member(X,Tail).