revers(X,Y).
 

revers(X,Y). - Переносит содержимое списка X в список Y в обратном порядке.

X

Список

Y Список
 

Определение предиката

revers([First|Other],RList) if
revers(Other,R),
append(R,[First],RList).

revers([ ],[ ]).
 

Примеры:

goal: revers([1,2,3,4],Y).

# Y
1 [4, 3, 2, 1]

goal: revers(X,[1,2,3,4]). Недопустимо. Зацикливание!
goal: revers([1,2,3,4],[1,2,3,4]). Нет
goal: revers([1,2,3,4],[4,3,2,1]). Да