Prolog:附加到列表的头部
Prolog: Appending to the head of a list
我该怎么做?具体来说,如果我有这样的列表:
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
您需要一个新变量。因此 List2 = [7|List]
.
与传统的、面向命令的编程语言(也称为命令式 pls)相比,这是非常奇怪的,但它是声明式编程语言的本质,尤其是逻辑编程语言。
这背后有很多含义,它允许 - 例如 - 以更容易的方式推理程序。
无论如何,请参考 Prolog 的入门书籍,例如 Prolog 的艺术。
我该怎么做?具体来说,如果我有这样的列表:
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
您需要一个新变量。因此 List2 = [7|List]
.
与传统的、面向命令的编程语言(也称为命令式 pls)相比,这是非常奇怪的,但它是声明式编程语言的本质,尤其是逻辑编程语言。
这背后有很多含义,它允许 - 例如 - 以更容易的方式推理程序。
无论如何,请参考 Prolog 的入门书籍,例如 Prolog 的艺术。