2012-01-05 65 views
0

我需要在Prolog中開發一個謂詞,能夠將一個列表與事實進行比較。換句話說,如果列表中的產品名稱也都在數據庫中(事實),那麼它必須說「是」,否則「否」。 謂詞明顯地收到產品名稱的列表。目前,我有這段代碼。檢查列表和數據庫[Prolog]

domains 
    state = reduced ; normal 
    element = string 
    list = element* 
database 
    producte (string, integer, state) 
predicates 
    nondeterm check(list) 
clauses 
    % ---> producte(description , price , state) 
    producte("Enciam",2,normal). 
    producte("Llet",1,reduced). 
    producte("Formatge",5,normal). 
    %unique case 
    check([Name]):- 
     producte([Name],_,_). 
    %general case 
    check([D|T]):- 
     producte(D,_,_), 
     check(T). 
Goal 
    check(["Enciam","Llet","Formatge"]). 
+0

到目前爲止所寫的問題是......什麼? – 2012-01-05 19:32:58

+0

它幾乎完美的作品。唯一的問題是,不能驗證事實中的所有產品。我的意思是,列表中是否包含比數據庫更少的產品,謂詞也會回答「是」。 – mkll 2012-01-06 17:48:44

回答

0

您檢查的基本情況是將產品名稱視爲列表而不是字符串。