вот оно, в стандартном прологе. Я думаю, что не должно быть никакой разницы с Eclipse:
list_to_op([X,Y|T], [R]) :-
list_to_op(T, X+Y, R).
edit : ошибка отмечена как false
list_to_op([X], [X]).
list_to_op([X], R, R+X).
list_to_op([X|T], R, Q) :-
list_to_op(T, R+X, Q).
тест:
?- list_to_op([a,b,c],X).
X = [a+b+c] .
Аккумулятор необходим для придания соответствующей ассоциативности: более простое и понятное определение
list_to_op1([X], X).
list_to_op1([X|R], X+T) :-
list_to_op1(R, T).
дает
?- list_to_op1([a,b,c],X).
X = a+ (b+c) .
Если важен порядок оценки, используйте list_to_op.
редактировать :
есть ошибка: list_to_op ([a, b], X) завершается неудачей.
здесь исправление, как это часто бывает, это упрощение:
list_to_op([], R, R).
list_to_op([X|T], R, Q) :-
list_to_op(T, R+X, Q).