Я пытаюсь углубить свое понимание Пролога и того, как он обрабатывает объединение списков. Так что я застрял на этом примере, потому что знаю ответ, выполняя код, но не могу понять, как он работает.
[X,a,X,f(X,a)|Y] = [Z,Z|Y]
Ответ:
X=Z
Z=a
Y=_
L=[a,f(a,a)|Y]
Я знаю, что голова объединяется с другой головой, поэтому, если я внесу некоторые изменения, например:
let C=[X,a,X,f(X,a)]
let D=[Z,Z]
и объединение должно происходить таким образом:
[C|Y]=[D|L]
Значит, Y должен быть равен L, а не _, верно? Может ли кто-нибудь лучше объяснить мне это и исправить мою ошибку?
X=Z, Z=a, Y = [a,f(a,a)|Y]
, что, я думаю, является ожидаемым результатом. - person hynner   schedule 16.04.2015