我想从事实创建一个列表。而且这个清单应该只包含事实中的一个。PROLOG从事实创建的列表的总和
例如:
%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.
但是,如果要总结现有列表,如何界定谓词?
findall(X,abc(X,_,_),A)。 –
谢谢,@VaughnCato。 – Chin
如何??列表(A),sumlist(A,Sum)'?当然你也可以使用@sharky提出的内置谓词。 –