有没有办法在findall/3
子句中评估这个总和?
findall((A+C,[M,H|_]),(b_to_b(H,M,C),\+ member(M,[H|T])),R).
在这里,我获得了(1+3,List)
之类的值,我正在寻找一些快捷方式,以便获得价值4
而不是(1+3)
我明白问题是什么,但快捷方式会很好,否则我必须重新访问整个列表,这不是很好。
由于
答案 0 :(得分:3)
假设A已经绑定到数字,只需将评估从模板移动到目标:
...,
findall((S,[M,H|_]),(b_to_b(H,M,C),\+ member(M,[H|T]), S is A+C),R).
效率提示:您还应将member / 2更改为memberchk / 2.