2012-01-24 2 views

ответ

2

Я думаю, что нужно объединить с [X | [b,c,d,e]], не [[X] | [b,c,d,e]], то есть вы можете получить X=a, не [X]=a.

3

Ваше предположение верно: [X], что мы можем переписать, поскольку .(X,[]) не может быть объединен с атомом a.

Мы можем переписать [X|[b,c,d,e]] как .(_G231,.(b,.(c,.(d,.(e,[]))))), то есть [X,a,b,c,d,e].

Вы можете осмотреть форму без синтаксиса сахара, используя дисплей/1.

1

Если X по какой-либо причине должен быть заключен в список, вы не сможете получить это унифицирование (как описано в chac). но для получения соответствия вы можете использовать предикат append:

?- append([X], [b,c,d,e], [a,b,c,d,e]). 
X = a 
Смежные вопросы