Списки различий в Прологе и изменяемых переменных

Являются ли списки различий средством «обойти» тот факт, что переменные являются неизменяемыми в прологе?

То есть если я реализую добавление с использованием списков различий:

diff_append(OpenList, Hole, L2) :-
    Hole = L2.

А затем запустите:

X=[a,b,c|Hole], diff_append(X, Hole, [d,e,f]).

В некотором смысле, X использовался как изменяемая переменная. Для наших намерений и целей это было изменено?

Другими словами, тот факт, что мы смогли изменить X (изменяемый) вместо того, чтобы создавать новый список, скажем, Z (неизменяемый), делает привлекательными списки различий. Так почему бы просто не иметь изменяемые переменные?

Обновить:

diff_append2(OpenList-Hole,L2):-
    Hole=L2.

X=[a,b,c|Ho]-Ho,diff_append2(X,[d,e,f]).

Ответы на вопрос(1)

Ваш ответ на вопрос