Prolog 列表 - 重复头

Prolog Lists - Duplicate head

我正在尝试从术语列表中列出 2 个连续的术语。所以如果 L1 和 L2 是列表并且 L2 连续两次包含 L1 中的每个元素,那么 echo 应该 return True。 没有 clpfd.

我想让 echo 接受...

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

和return...

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'

我猜你不想使用 CLPFD。

没有 CLPFD:

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