Списки Пролога - Дублирующая голова - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь составить список из 2 последовательных терминов из списка терминов.Поэтому echo должен возвращать True, если L1 и L2 являются списками, а L2 содержит каждый элемент в L1 дважды подряд.Без clpfd.

Я хочу, чтобы эхо получило ...

echo([x,1,[b]], L).  

и вернуло ...

L = [x,x,1,1,[b],[b]].

Работает с ...

echo([2,1],[2,2,1,1]).
true.

Это то, что у меня есть до сих пор ...

echo([],[]).
echo([X|XS], [Y,Z|YZS]) :-
    X #= Y,
    Y #= Z,
    echo(XS, YZS).

Я получаю ошибку об условиях =>

Domain error: `clpfd_expression' expected, found `x'

1 Ответ

0 голосов
/ 27 ноября 2018

Полагаю, вы не хотите использовать CLPFD.

Без CLPFD:

echo([], []).
echo([X|Xs], [X,X|Ys]):-
  echo(Xs, Ys).
...