我必须编写一个序言查询来打印每个家庭的家庭详细信息,其中孩子的总收入超过他们的父母,我已经写过但我收到了这个错误
Arguments are not sufficiently instantiated
In:
[3] _1770 is _1776+0
[2] totalx([person(_1844,_1846,_1848,...)],_1834) at line 50
[1] '<meta-call>'((...,...)) <foreign>
这是基本代码:
family(person( john, cohen, date(17,may,1990), unemployed), person( lily, cohen,
date(9,may,1990), unemployed),[ ] ).
family(person( john, armstrong, date(7,may,1988), unemployed), person( lily, Armstrong,
date(29,may,1961), unemployed), [ ] ).
family(person( eric, baily, date(7,may,1963), works( bbc, 2200)), person( grace, baily,
date(9,may,1965), works( ntu, 1000)), [person( louie, baily, date(25,may,1983), unemployed) ] ).
family(person( eric, baily, date(7,may,1963), works( acc, 21200)), person( grace, baily,
date(9,may,1965), works( ntnu, 12000)), [person( louie, baily, date(25,may,1983), unemployed) ] ).
family(person( eric, fox, date(27,may,1970), works( bbc, 25200)), person( grace, fox,
date(9,may,1971), works( ntbu, 13000)), [person( louie, fox, date(5,may,1993), unemployed) ] ).
husband(X) :- family(X, _, _).
wife(X) :- family(_, X, _).
child(X) :- family(_, _, Children), member(X, Children).
salary(person(_, _, _, works(_, S)), S).
salary(person(_, _, _, unemployed), 0).
这是我的要求代码:
48-totalx([],0).
49-totalx([Person|L],Sum):-salary(Person,S),totalx(L,Rest),
50-Sum is S+Rest
以及对需求的查询:
family(Husband,Wife,Child),totalx(Children,IChildren),totalx([Husband],IHusband),
totalx([Wife],IWife),IChildren > IHusband+IWife.
有人可以向我解释为什么它不起作用吗?