我有功能列表
列表= [segmentTime(红色,a,c,2),segmentTime(绿色,c,e,3),segmentTime(绿色,e,h,4),segmentTime(蓝色,h,i,5)]
如何找到列表中所有元素的函数的整数部分的总和?
即总和= 2 + 3 + 4 + 5
谓词的摘要代码将非常有用。 在此先感谢:)
答案 0 :(得分:0)
您会惊讶地发现答案如此简单。
sumList([],0).
sumList([segmentTime(_,_,_,X)|T],Z):- sumList(T,Z1),Z is Z1+X.
输出
?-sumList([segmentTime(red,a,c,2),segmentTime(green,c,e,3),segmentTime(green,e,h,4),segmentTime(blue,h,i,5)],M).
M=14
希望这对您有所帮助。
答案 1 :(得分:0)
另一个是使用库(lambda)。
:- use_module(library(lambda)).
getList(L):-
L = [segmentTime(red,a,c,2),segmentTime(green,c,e,3),segmentTime(green,e,h,4),segmentTime(blue,h,i,5)].
sumOfList(L, S) :-
foldl(\X^Y^Z^(X = segmentTime(_,_,_,V), Z is Y + V), L, 0, S).
输出:
?- getList(L), sumOfList(L, S).
L = [segmentTime(red, a, c, 2), segmentTime(green, c, e, 3), segmentTime(green, e, h, 4), segmentTime(blue, h, i, 5)],
S = 14.