从Prolog中返回基本案例列表

时间:2017-10-01 17:52:07

标签: prolog

我对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  不是您年龄的人员名单。

有什么问题?!

由于

0 个答案:

没有答案