我想根据事实创建一个列表。并且该列表应仅包含事实中的一项。
例如 :
%facts
abc(a, b, c).
abc(d, e, f).
abc(g, h, i).
样本 :
?-lists(A).
A = [a, d, g];
No.
编辑 :
使用Vaughn Cato
评论中的建议,代码变为:
%facts
abc(a, b, c).
abc(d, e, f).
abc(g, h, i).
lists(A) :-
findall(findall(X, abc(X, _, _), A).
列表已创建,但如何总结列表A
?
如果查询输入的列表总和,
sumlist([], 0).
sumlist([X|Y], Sum) :-
sumlist(Y, Sum1),
Sum is X + Sum1.
但是如果要对现有列表求和,如何定义谓词?