Prolog 在子句开头计算表达式

Prolog 在子句开头计算表达式,prolog,Prolog,有没有办法在findall/3子句中计算这个总和 findall((A+C,[M,H|_]),(b_to_b(H,M,C),\+ member(M,[H|T])),R). 这里我得到的值类似于(1+3,列表),我正在寻找一些快捷方式,以便得到值4,而不是(1+3) 我知道问题出在哪里,但是一条捷径会很好,否则我必须重新查看整个列表,这不好 谢谢假设A已绑定到数字,只需将评估从模板移动到目标: ..., findall((S,[M,H|_]),(b_to_b(H,M,C),\+ member(M

有没有办法在
findall/3
子句中计算这个总和

findall((A+C,[M,H|_]),(b_to_b(H,M,C),\+ member(M,[H|T])),R).
这里我得到的值类似于
(1+3,列表)
,我正在寻找一些快捷方式,以便得到值
4
,而不是
(1+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