类型错误:错误的对象类型。 - 基本的prolog错误

时间:2012-10-31 12:24:58

标签: prolog

我正在尝试学习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])

欢迎任何建议或提示。谢谢。

1 个答案:

答案 0 :(得分:1)

你混淆了变量和原子。原子以小写字母开头,而变量以大写字母开头。

此外,您的member/2定义似乎有误。它应该是:

clauses
    member(Elm,[Elm|_]).
    member(Elm,[_|T]):-  
        member(Elm,T).

第一个子句将元素与第二个列表的头部匹配。第二个子句跳过第二个列表的头部并递归调用member/2以在列表的尾部找到另一个匹配。