Prolog:附加到列表的头部

时间:2015-02-21 18:34:11

标签: list prolog variable-assignment

我该如何做?具体来说,如果我有这样的列表:

List = [8, 9, 10]. % I know this using matching to assign the say that [8, 9, 10] = [8, 9, 10], thus making List contain [8, 9, 10]

现在,如果我尝试将另一个变量附加到此现有列表,我该怎么做?我试过这个:

List = [7|List].

这显然不起作用(尽管我希望如此)。然后我尝试了这个:

List is [7|List].

仍然没有。如何将变量附加到列表的头部?如果有一种方法没有使用其他功能,但通过操纵此列表,我会更喜欢,但欢迎所有解决方案。

由于


说我有这样的存根:

stub(List):-
    List2 = [7|List],
    %% Do something recursively
    List = List2 %% How do I do thi part?

找到一个解决方案,看起来不是很优雅,但它确实有效!

stub(List, List2):-
    stub(List, [7|List2]), %% Some base case causes this recursion to stop
    %% Do something in the recursion
    List = List2 %% Finally do what I wanted to do

1 个答案:

答案 0 :(得分:2)

您需要一个新变量。因此List2 = [7|List]

与传统的面向命令的编程语言(也称为命令式编程语言)相比,这是非常奇怪的,但它是声明性编程语言的本质,特别是逻辑编程语言。

这背后有许多含义,例如,它允许以更容易的方式推理程序。

在任何情况下,请参阅Prolog的介绍性书籍,如Prolog的艺术。