list - 在 Prolog 中将元素附加到列表的开头

标签 list prolog

如何在 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/

相关文章:

c# - 是否可以从 List<T> 访问结构体的引用来进行更改?

list - Markdown:列表转换不好

prolog - Prolog 中按值-结果传递如何工作的示例

prolog - 如何对不同事实中的数字进行求和?

list - 理解 Prolog 列表和递归

list - 在Prolog中不统一删除列表的所有成员

java - 将值添加到 java 中的映射数组中的单个变量

python - 将 for 循环转换为列表理解

python - 在字典中附加列表的最佳方法是什么?

prolog - Prolog的附件有什么问题?