Списки различий в Прологе и изменяемых переменных
Являются ли списки различий средством «обойти» тот факт, что переменные являются неизменяемыми в прологе?
То есть если я реализую добавление с использованием списков различий:
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]).