2012-10-31 77 views
0

我正在嘗試學習序言和我在這個錯誤,我不知道爲什麼我得到它,所以我要求你的幫助。類型錯誤:錯誤的對象類型。 - 基本的序言錯誤

代碼(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

你在混淆變量和原子。原子以小寫字母開頭,而變量以大寫字母開頭。

此外,您的member/2定義似乎是錯誤的。它應顯示爲:

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

第一個子句將元素與第二個列表的開頭匹配。第二個子句跳過第二個列表的頭並遞歸地調用member/2以在列表尾部查找另一個匹配。