如何将元素附加到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]).
但它不起作用,我没有想法。任何人都可以描述我的实施有什么问题以及它需要哪些变化才能正常工作?
答案 0 :(得分:8)
要在列表的开头添加元素,只需使用列表表示法:
pushFront(Item, List, [Item|List]).
列表表示在内部使用cons函子(.
),因此列表[b,c,d]
只是'.'(b,'.'(c, '.'(d, [])))
的语法糖。
此表示允许您通过包装另一个cons函子在前面添加项目,即如果要在列表L
的前面添加项目a,则将包裹'.'(a, L)
我们通常简单地将其写为[a|L]
。