我有一份事实清单。每个事实都定义了两个主题之间的关系以及他们完成的项目数量。它们的定义如下:
label(allGroups,[group(a,b,10),group(b,c,3),group(c,d,12)]).
我正在尝试编写一个函数来列出个人完成的所有项目。例如,“b”共完成了 13 个项目,而 c 共完成了 15 个项目。
这是我现在要做的功能。
individualSum([],_,0).
individualSum([group(Name,_,Projects)|Tail],Name,Sum) :-
individualSum(Tail,Name,Tailsum),
Sum is Projects + Tailsum.
individualSum([group(_,Name,Projects)|Tail],Name,Sum) :-
individualSum(Tail,Name,Tailsum),
Sum is Projects + Tailsum.
我一直在弄错,无法弄清楚这是由于递归的基本情况不完整还是完全是其他原因。这是我正在运行的内容:
?- [groupSum].
?- label(allGroups,L),Groups=L).
(吐出所有组,然后:)
?- individualSum($Groups,b,Total).
false.
知道我哪里出错了吗?我很感激我能得到的任何帮助。