Компоновка данных из базы в список
Для сбора данных из базы и компоновки в список используют встроенный предикат findall (найти все):
findall (имя_переменной, предикат_выражения, имя_списка)
Пример. Допустим, имеется список футболистов клуба «Томь» и их рост. Найти средний рост команды.
Запрос: Findall(Points, football(_,Points), Points_list). Он просматривает всю базу и переносит значения Points в список Point_List. Для подсчета среднего значения используется предикат:
Sum_list ([ ], 0, 0) – граничное условие.
Sum_list ([Н|Т], Sum, Number1):– Sum_list (Т, Sum1, Number1),
Sum = Н+ Sum1, Number = Number1+1.
Средний рост определяем по предикату: Averang = Sum/Number.