これが、標準のPrologです。Eclipseとの違いはないはずだと思います。
list_to_op([X,Y|T], [R]) :-
list_to_op(T, X+Y, R).
編集: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).