在这里,在标准 Prolog 中。我觉得应该和 Eclipse 没什么区别:
list_to_op([X,Y|T], [R]) :-
list_to_op(T, X+Y, R).
编辑:错误指出的错误
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).