Prolog-编写计算两个原子语句之和的谓词

Prolog-编写计算两个原子语句之和的谓词,prolog,Prolog,假设我有: person(bob,50) . person(joe,60) . 我想写一个名为“totalAge(a)”的谓词,它计算两个原子语句的总值a 我将如何继续这样做?您可以使用findall/3收集所有年龄段的数据,然后使用sumlist/2将其汇总: totalAge(A):- findall(Age, person(_, Age), Ages), sumlist(Ages, A). 你的意思是像“总年龄”(ListOfPerson,totalAge)?-聚合(总和(A

假设我有:

person(bob,50) . 
person(joe,60) .
我想写一个名为“totalAge(a)”的谓词,它计算两个原子语句的总值a


我将如何继续这样做?

您可以使用
findall/3
收集所有年龄段的数据,然后使用
sumlist/2
将其汇总:

totalAge(A):-
  findall(Age, person(_, Age), Ages),
  sumlist(Ages, A).

你的意思是像“总年龄”(ListOfPerson,totalAge)?-聚合(总和(A),P^人(P,A),S)。@EmrysMyrooin值A是年龄确定的。只有totalAge(A)有没有一种方法可以做到这一点,而不使用findAll和sumlist之类的内置名称?是的,
sumlist/2
可以轻松实现。OTOT
findall/3
需要进行一些破解,例如使用assert/retract来收集所有结果,回溯“person/2”的所有解决方案。