カウントとサムルールで再帰を使用する方法を理解しようとしています。Prologで再帰的にカウントして合計する方法
私は通常、findallとlengthまたはfindallとsum_listを使用してリストを作成しますが、それがすべての場合に最良の選択肢かどうかはわかりません。
これは、リストを持つ私のアプローチです:
%person(name, surname, age)
person('A', 'H', 22).
person('B', 'G', 24).
person('C', 'F', 20).
person('D', 'E', 44).
person('E', 'D', 45).
person('F', 'C', 51).
person('G', 'B', 40).
person('H', 'A', 51).
count_person(Total_count) :- % rule to count how many person are.
findall(N, person(N, _, _), List),
length(List, Total_count).
sum_ages(Total_sum) :- % rule to sum all the ages.
findall(Age, person(_, _, Age), List),
sum_list(List, Total_sum).
かここに:https://swish.swi-prolog.org/p/cswl.pl
は、どのように私はこの再帰を使用すればよいですか?