Отказ от ответственности: я не знаю Пролог.Остальная часть этого ответа - окончательное предположение.
Ваше предлагаемое решение X = [red]
не имеет смысла, потому что это сделает X
одноэлементным списком.Давайте вместо этого предположим
X = red
.
Это даст нам
conc([red | green], [blue], [red, green, blue]).
Со вторым уравнением conc
, которое превращается в
conc(R1, L2, RN).
% with:
% X1 = red
% R1 = green
% L2 = [blue]
% [X1|RN] = [red, green, blue]
% i.e. X1 = red
% RN = [green, blue]
Т.е.
conc(green, [blue], [green, blue]).
А теперь мы застряли, потому что ни одно из ваших conc
правил не применимо к green
.
Проблема в [X | green]
, поскольку green
нехвост списка.
Вы имели в виду [X, green]
вместо этого?