在Prolog中将元素追加到列表的开头

Mat*_*Mut 3 list prolog

如何将元素附加到Prolog中列表的开头?我需要像这样调用最终结果:

pushFront(8, [3, 1], NewList). % NewList is now [8, 3, 1].
Run Code Online (Sandbox Code Playgroud)

我试图按如下方式实现它:

pushFront(Item, [], [Item|_]). %Problematic
pushFront(Item, [OldDequeH|OldDequeT], NewDeque) :-
    leftPush(OldDequeH, OldDequeT, [Item|NewDeque]).
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我没有想法.任何人都可以描述我的实现有什么问题以及它需要哪些更改才能正常工作?

gus*_*bro 8

要在列表的开头添加元素,只需使用列表表示法:

pushFront(Item, List, [Item|List]).
Run Code Online (Sandbox Code Playgroud)

列表表示在内部使用cons functor(.),因此列表[b,c,d]只是语法糖'.'(b,'.'(c, '.'(d, []))).

这种表示允许您通过包装另一个cons函数在前面添加一个项目,即如果您想要在列表的前面添加一个项目La '.'(a, L),我们通常会将其写为[a|L].