2010-07-28 4 views
1

Je voudrais définir une liste (Liste des clients de banque) du prédicat et traiter la liste en utilisant une certaine règle.Traitement de la liste Prolog

Par exemple, je dois le prédicat comme client ce

customer(peter,bank(maybank),customertype(personal), 
    citizen(malaysian),age(62),credit(50000), 
    income(4500),property(car),bankemployee(no)). 

customer(mary,bank(maybank),customertype(vip), 
    citizen(others),age(45),credit(20000), 
    income(5000),property(house),bankemployee(yes)). 

Je veux les ajouter dans une liste à l'intérieur du programme code source. Puis, je voudrais évaluer la liste si l'élément dans la liste remplit une règle particulière. Exemple: si le premier prêt d'article accepte, si le second article (client) a un intérêt inférieur.

isloanaccept(Name,Guarantor,LoanType,LoanAmount,LoanTenure) 
:- customer(Name,bank(_),customertype(_), 
    citizen(Ci),age(Age),credit(C), 
    income(I),property(_),bankemployee(_)), 
    Ci == 'malaysian', 
    Age >= 18, 
    C > 500, 
    I > (LoanAmount/LoanTenure)/12; 
    isguarantor(Guarantor,Name), 
    ispersonalloan(LoanType,LoanAmount,LoanTenure); 
    ishouseloan(LoanType,LoanAmount,LoanTenure); 
    isbusinessloan(LoanType,LoanAmount,LoanTenure); 
    iscarloan(LoanType,LoanAmount,LoanTenure). 

issenioroffer(Name,LoanAmount,LoanTenure) 
:- isloanaccept(Name,LoanAmount,LoanTenure), 
    isseniorcitizen(Name). 

Je dois les programmer plus haut niveau.

Aidez-nous s'il vous plaît.

Merci.

Répondre

1

1) Pour mettre tous costomers dans une liste, vous pouvez utiliser bagof (reference):

bagof(
    [Name, Bank, Type, Cit, Age, Cred, Inc, Prop, BEmp], 
    customer(Name, Bank, Type, Cit, Age, Cred, Inc, Prop, BEmp), 
    Customers 
) 

devrait créer une liste (Customers) des listes où chaque élément contient les propriétés d'un client donné. Je n'ai pas la question 2 :-)

+0

Merci. Problème résolu. – peterwkc

+0

Et avec autant d'arguments, il devient intéressant de les mettre dans un foncteur (enregistrement), disons, 'cust (Nom, Banque, ..., BEmp)' de sorte que vous pouvez dire 'bagof (Client, client (Client), Clients) –

+0

Certainement! Je suis d'accord. – Mau