如何在 Prolog 中将元素附加到列表的开头?我需要像这样调用最终结果:
pushFront(8, [3, 1], NewList). % NewList is now [8, 3, 1].
我尝试按如下方式实现它:
pushFront(Item, [], [Item|_]). %Problematic
pushFront(Item, [OldDequeH|OldDequeT], NewDeque) :-
leftPush(OldDequeH, OldDequeT, [Item|NewDeque]).
但它不起作用,我没有想法。任何人都可以描述我的实现有什么问题以及它需要哪些更改才能正常工作?
最佳答案
要在列表的开头添加元素,只需使用列表表示法:
pushFront(Item, List, [Item|List]).
列表表示在内部使用 cons 仿函数(
.
),因此列表 [b,c,d]
只是 '.'(b,'.'(c, '.'(d, [])))
的语法糖.这种表示允许您通过包装另一个 cons 仿函数在前面添加一个项目,即如果您想在列表的前面添加一个项目 a
L
你会包裹一个 '.'(a, L)
,我们通常简单地写成 [a|L]
.
关于list - 在 Prolog 中将元素附加到列表的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36917781/