我对Prolog的运作方式有些怀疑。
我有这个代码(NEW VERSION):
listaPessIdade([], Lista).
listaPessIdade([X|Xs], []) :- findall((X, Idade), idade(X, Idade), Lista), listaPessIdade(Xs, Lista).
listaPessIdade([X|Xs], L) :- findall((X, Idade), idade(X, Idade), Lista), listaPessIdade(Xs, [Lista|L]).
(OLD VERSION):
listPerAge([], [], List, List).
listPerAge([X|Xs]):- listPerAge(X, Xs, []).
listPerAge(Y, [X|Xs], L):- findall((Y, I), age(Y, I), L1), listPerAge(X, Xs, [L1|L]).
listPerAge(Y, [], L):- findall((Y, I), age(Y, I), L1), listPerAge([], [], [L1|L], [L1|L]).
我在我的KB类型中有一组谓词:age(person, number)
但是,当我咨询listPerAge([List of persons names])
时,结果是 true
不是您年龄的人员名单。
有什么问题?!
由于