Ну, вы не хотите вводить список все время. Это означает, что вы должны иметь предикат что-то вроде my_list/1
и использовать его в своей программе.
my_list( [1,3] ).
average_easy( List, Avg ) :-
sum_( List, Sum ),
length_( List, Length ),
Avg is Sum / Length.
sum_( [], 0 ).
sum_( [H|T], Sum ) :-
sum_( T, Temp ),
Sum is Temp + H.
length_( [], 0 ).
length_( [_|B], L ):-
length_( B, Ln ),
L is Ln+1.
main :-
my_list( X ),
average_easy( X, Ans ),
writeln((X, Ans)).
Итак, что мы получили сейчас, это
?- [your_program_name].
% your_program_name compiled 0.00 sec, 64 bytes
true.
?- main.
[1,3],2
true.
Кстати, есть предикат length/2
, уже встроенный в swi-пролог.