Списки Пролога - Дублирующая голова
Я пытаюсь составить список из двух последовательных терминов из списка терминов. Поэтому 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 ответ
Решение
Я думаю, вы не хотите использовать CLPFD.
Без CLPFD:
echo([], []).
echo([X|Xs], [X,X|Ys]):-
echo(Xs, Ys).