我正在尝试学习prolog而且我在这个错误中豁免,我不知道为什么我得到它所以我要求你的帮助。
码(TPROLOG#86):
trace
domains
item = integer
intList = item*
predicates
member(item,intList)
clauses
member(elm,[elm|_]).
member(elm,[_|T]):- %%% ***ELM is seen as wrong type, why?***
member(item,[T]).
goal
member(5,[1,2,3,4,5])
欢迎任何建议或提示。谢谢。
答案 0 :(得分:1)
你混淆了变量和原子。原子以小写字母开头,而变量以大写字母开头。
此外,您的member/2
定义似乎有误。它应该是:
clauses
member(Elm,[Elm|_]).
member(Elm,[_|T]):-
member(Elm,T).
第一个子句将元素与第二个列表的头部匹配。第二个子句跳过第二个列表的头部并递归调用member/2
以在列表的尾部找到另一个匹配。