Prolog - Erste Syntax-Fehler - Operator Erwartet

Bin ich angefangen zu lernen, Prolog, und ich bin in ein compiler-Fehler mit meinem code. Ich versuche, code zu schreiben, der prüft, ob eine Familie in die Armut, wenn Sie bestimmte Bedingungen erfüllen. Die Letzte Zeile zwei Zeilen sind die Armut, die Bedingungen, und das ist, wo ich immer bin Opertator Expected Fehler. Ich bin versucht zu sagen, dass angesichts der family-ID, wenn die Größe der Familie ist, und das Einkommen ist weniger als 11170, dann, dass die Familie in Armut. Und für eine Familie Größe von >8 die Armut ist 38890 plus 3960 für jedes weitere Familienmitglied. Wie kann ich diesen Fehler korrigieren? family_in_poverty sollte wieder true oder false.

family(10392,
       person(tom, fox, born(7, may, 1960), works(cnn, 152000)),
       person(ann, fox, born(19, april, 1961), works(nyu, 65000)),
       % here are the children...
       [person(pat, fox, born(5, october, 1983), unemployed),
        person(jim, fox, born(1, june, 1986), unemployed),
        person(amy, fox, born(17, december, 1990), unemployed)]).

family(38463, 
       person(susan, rothchild, born(13, september, 1972), works(osu, 75000)),
       person(jess, rothchild, born(20, july, 1975), works(nationwide, 123500)),
       % here are the children...
       [person(ace, rothchild, born(2, january, 2010), unemployed)]).

married(FirstName1, LastName1, FirstName2, LastName2) :-
    family(_, person(FirstName1, LastName1, _, _),
           person(FirstName2, LastName2, _, _), _).

married(FirstName1, LastName1, FirstName2, LastName2) :-
    family(_, person(FirstName2, LastName2, _, _),
           person(FirstName1, LastName1, _, _), _).

householdIncome(ID, Income) :-
    family(ID, person(_, _, _, works(_, Income1)),
           person(_, _, _, works(_, Income2)), _),
    Income is Income1 + Income2.

exists(Person) :- family(_, Person, _, _).
exists(Person) :- family(_, _, Person, _).
exists(Person) :- family(_, _, _, Children), member(Person, Children).

householdSize(ID, Size) :-
    family(ID, _, _, Children),
    length(Children, ChildrenCount),
    Size is 2 + ChildrenCount.

:- use_module(library(lists)). % load lists library for sumlist predicate

average(List, Avg) :-
    sumlist(List, Sum),
    length(List, N),
    Avg is Sum /N.

family_in_poverty(FamilyID) :- householdSize(FamilyID, 1), householdIncome(ID, X), X <= 11170.
family_in_poverty(FamilyID) :- householdSize(FamilyID, 2), householdIncome(ID, X), X <= 15130.
........
family_in_poverty(FamilyID) :- householdSize(FamilyID, Y), householdIncome(ID, X), X <= 38890 + (Y - 8)*3960, Y > 8.

InformationsquelleAutor user906153 | 2012-04-29

Schreibe einen Kommentar