уверен:
reverseList([[], Accumulator, Accumulator]).
reverseList([[Head|Tail], Accumulator, Solution]) :-
reverseList([Tail, [Head|Accumulator], Solution]).
reverseList([List, Solution]) :-
reverseList([List, [], Solution]).
редактировать: на самом деле это только один: b
не обмануть подход:
reverse([],[]).
reverse([H|T],L):-
reverse(T,R),
append(R,[H],L).
проблема в том, что производительностьбудет довольно плохо: вы будете повторяться по списку и для каждого элемента вы будете делать одно добавление / 3.используя time / 1 и случайный список из 1 000 000 элементов:
accumulator: % 2,000,003 inferences, 0.652 CPU in 0.652 seconds (100% CPU, 3066292 Lips)
arity-2 % 1,000,003 inferences, 0.178 CPU in 0.178 seconds (100% CPU, 5602426 Lips)